これが脳みそで簡単な質問であることを願っていますが、これは私の C++ に関する専門知識の欠如を示しています。私は C# プログラマーであり、過去に他の人の C++/C dll を使用して P/Invoke で広範な作業を行ってきました。ただし、今回はラッパー C++ dll (アンマネージ) を自分で作成することにし、C# からラッパー dll を呼び出しています。
私がすぐに直面している問題は、p/invoke で見つけられる C++ 関数を定義できないことです。これの構文が何であるかはわかりませんが、これまでに試したことは次のとおりです。
extern bool __cdecl TestFunc()
{
return true;
}
もともと私はこれを持っていましたが、どちらも機能しませんでした:
bool TestFunc()
{
return true;
}
そして、C# 側では、次のようにしています。
public const string InterfaceLibrary = @"Plugins\TestDLL.dll";
[DllImport( InterfaceLibrary, CallingConvention = CallingConvention.Cdecl,
EntryPoint = "TestFunc" ), SuppressUnmanagedCodeSecurity]
internal static extern bool TestFunc();
すべてがコンパイルされますが、この C# p/invoke 呼び出しを実行すると、System.EntryPointNotFoundException: Unable to find an entry point named 'TestFunc' in DLL 'Plugins\TestDLL.dll' が発生します。
確かに、これは構文を知らない C++ 側では信じられないほど単純なものに違いありません。