2

我在我的 C++/CLI 项目中使用lib_usb,我需要usb_get_busses在我的托管 C++/CLI 代码中使用它的函数和其他一些函数。

使用一个 managedAutoPtr创建usb_bus结构如下:

AutoPtr<struct usb_bus> bus;

现在我需要调用该usb_get_busses函数,但是链接器似乎对调用约定不满意。CLR 使用 clrcall 调用约定,显然 C 使用__cdecl.

usb_bus* usb_get_busses(void)<--- C 函数的签名。

现在如何让自己能够lib_usb在 C++/CLI 中使用?我是否必须创建一个 C++/CLI 包装器或其他东西?

链接器吐出这条消息:

错误 LNK2031:无法为“extern "C" struct usb_bus * __clrcall usb_get_busses(void)”生成 p/invoke (?usb_get_busses@@$$J0YMPAUusb_bus@@XZ);元数据中缺少调用约定

4

1 回答 1

1

根本没有指定__cdecl。查看链接器错误 - 它清楚地说明了__clrcall。尝试用 . 明确指定它__cdecl

于 2012-06-18T10:42:09.907 回答