私はdev C++にDLLを書きました。 DLLの名前は "DllMain.dll"で、2つの関数、HelloWorld
とShowMe
が含まれています。ヘッダファイルには、次のようになります。C++でC++ DLLを呼び出す方法
DLLIMPORT void HelloWorld();
DLLIMPORT void ShowMe();
とソースファイルは、次のようになります。私は、DLLにコードをコンパイルするとC#からの二つの機能を呼び出す
DLLIMPORT void HelloWorld()
{
MessageBox (0, "Hello World from DLL!\n", "Hi",MB_ICONINFORMATION);
}
DLLIMPORT void ShowMe()
{
MessageBox (0, "How are u?", "Hi", MB_ICONINFORMATION);
}
。 C#のコードは次のようになります。
[DllImport("DllMain.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void HelloWorld();
[DllImport("DllMain.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void ShowMe();
私はそれがうまく実行され、メッセージボックスをポップアップし、私は関数を呼び出すときShowMe
EntryPointNotFoundException
が発生した機能「HelloWorldの」と呼んで
extern "C"
を追加する必要がありますか?
C++コードを投稿できますか? –
呼び出し規約を 'CallingConvention.StdCall'に変更してください。 – Henrik