【发布时间】:2012-06-18 10:30:44
【问题描述】:
我在我的 C++/CLI 项目中使用 lib_usb,我需要在我的托管 C++/CLI 代码中使用它的函数 usb_get_busses 和其他一些函数。
使用托管AutoPtr 创建usb_bus 结构如下:
AutoPtr<struct usb_bus> bus;
现在我需要调用usb_get_busses 函数,但是链接器似乎对调用约定不满意。 CLR 使用 clrcall 调用约定,显然 C 使用 __cdecl。
usb_bus* usb_get_busses(void)
现在如何让自己能够在 C++/CLI 中使用 lib_usb?我是否必须创建 C++/CLI 包装器或其他东西?
链接器吐出这条消息:
错误 LNK2031: 无法为 "extern "C" 结构生成 p/invoke usb_bus * __clrcall usb_get_busses(void)" (?usb_get_busses@@$$J0YMPAUusb_bus@@XZ);缺少调用约定 元数据
【问题讨论】:
标签: c c++-cli calling-convention