0

C ++ / CLIで利用可能な(C ++ dllからの)次の関数が必要です

extern "C" _declspec(dllexport) void __stdcall DestroyInstance(CKeyManagerServerApp *ptr);

私の試み:

[DllImport("KeyManagerServer.dll", CallingConvention=CallingConvention::StdCall)]
void DestroyInstance(CKeyManagerServerApp IntPtr);

C ++ /CLIラッパーは/clrとstdcallでコンパイルされます(C ++ dllもstdcallでコンパイルされます)!

次のエラーが発生しました:

MKeyManagerInterface.obj : error LNK2028: unresolved token (0A000585) "extern "C" void __stdcall DestroyInstance(class CKeyManagerServerApp *)" (?DestroyInstance@@$$J14YGXPAVCKeyManagerServerApp@@@Z) referenced in function "private: __clrcall MKeyManagerInterface::ManagedKeyInterface::~ManagedKeyInterface(void)" (??1ManagedKeyInterface@MKeyManagerInterface@@$$FA$AAM@XZ)
1>MKeyManagerInterface.obj : error LNK2019: unresolved external symbol "extern "C" void __stdcall DestroyInstance(class CKeyManagerServerApp *)" (?DestroyInstance@@$$J14YGXPAVCKeyManagerServerApp@@@Z) referenced in function "private: __clrcall MKeyManagerInterface::ManagedKeyInterface::~ManagedKeyInterface(void)" (??1ManagedKeyInterface@MKeyManagerInterface@@$$FA$AAM@XZ)
1>..\Debug\Bin\KeyManagerInterfaceD.dll : fatal error LNK1120: 2 unresolved externals

このリンカーエラーを解決するにはどうすればよいですか?

どうも

4

1 に答える 1

2

C ++/CLIからP/Invokeを使用する必要はありません。インポートされた関数を宣言する通常のC/C++ヘッダーファイルをインクルードできるはずです。問題の関数をエクスポートするネイティブコードDLLからのエクスポートライブラリに対して、C ++/CLIアセンブリをリンクするようにしてください。

于 2012-07-05T09:46:40.067 に答える