問題
C# から C++のメソッドを呼び出した時に0x8007007Eが発生する。
理由
DLLImportに指定したdllが見つからない。
dllはあるが、そのdllが更に呼び出すdllが見つからない。
dllは見つかったが、指定した関数名が見つからない。
対処
ファイル不足
DLLはexeと同じフォルダに配置する。
依存しているdllが不足していないか確認し配置する。
(一般的にはビルドした時に、必要なdllも配置される)
メソッド呼び出し
C++側の関数は extern "C" で定義する。または .def ファイルに指定する。
関数宣言に __declspec( dllexport ) を指定する
関数は _stdcall で宣言する。
C# から C++のメソッドを呼び出した時に0x8007007Eが発生する。
System.DllNotFoundException:
'Unable to load DLL 'MyFunc.dll' or one of its dependencies:
The specified module could not be found. (0x8007007E)'
理由
DLLImportに指定したdllが見つからない。
dllはあるが、そのdllが更に呼び出すdllが見つからない。
dllは見つかったが、指定した関数名が見つからない。
対処
ファイル不足
DLLはexeと同じフォルダに配置する。
依存しているdllが不足していないか確認し配置する。
(一般的にはビルドした時に、必要なdllも配置される)
メソッド呼び出し
C++側の関数は extern "C" で定義する。または .def ファイルに指定する。
関数宣言に __declspec( dllexport ) を指定する
関数は _stdcall で宣言する。
extern "C"
{
__declspec( dllexport ) int APIENTRY MyFunc ( int p1, char* p2, int size );
}