私は静的ライブラリから関数を公開する単純なC DLLを持っています。 DLLはエラーなしでコンパイルされ、DUMPBINを実行してエクスポートを確認できます。しかし、私はC#でDllImport
でそれをロードしようとすると、それはこの意見:なぜcl.exeは有効なWindowsモジュールを生成していませんか?
System.DllNotFoundException: Unable to load DLL 'ei.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E).
それは確かに、正しいディレクトリにあります。だから私は、他のものを含める必要がある場合に備えて、Dependency Walkerを試してみることをお勧めします。残念ながら、私はDWで私のDLLを開こうとすると、私はこの取得:
Error: At least one file was not a 32-bit or 64-bit Windows module.
をここに私のcl
コマンドです:
set ERL_INTERFACE_DIR=C:\Progra~1\erl5.7.2\lib\erl_interface-3.6.2\
call vcvars32.bat
cl /I%ERL_INTERFACE_DIR%include /LD ei.c ei.lib Ws2_32.lib /link /LIBPATH:%ERL_INTERFACE_DIR%lib
これを引き起こしている可能性がありますか?
依存関係ウォーカーの出力(モジュールリスト)をよりよく表示します。 – EFraim
EI.DLL < - これだけです。それの横に赤い円があります。 –