私はC++/CLI プロジェクトでlib_usbusb_get_busses
を使用しています。マネージ C++/CLI コードで lib_usb の関数とその他の関数を使用する必要があります。
次のようにマネージドAutoPtr
を使用して構造体を作成し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); 呼び出し規約がメタデータにない