我在我的 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);元数据中缺少调用约定