0

Visual Studio 2005 を使用してコンパイルした DLL ファイルがあり、C# プログラムからこれらの関数 (DLL 内) を呼び出すと、完全に機能します。しかし、同じプログラムを NMAKE を使用してコンパイルすると、正常にコンパイルされますが、C# プログラムでは動作しません。「DLL NOT FOUND EXCEPTION」または「DLL IS CORRUPT」が表示されます。

PS: 元のプロジェクト ファイルからすべてのコンパイラ オプションとリンカー オプションをコピーし、それをMakeFileで使用しましたが、まだ役に立ちません。ここで何が欠けていますか?

コンパイラとリンカーのオプションは次のとおりです。

Compiler opt: /O2 /Ob1 /D "WIN32" /D "NDEBUG" /D "_WRITE_LOGS" /D "_VC80_UPGRADE=0x0700" /D "_WINDLL" /D "_MBCS" /Fo"obj\\" /FD /EHsc /MD /W3 /nologo /c /Gz /TP /errorReport:prompt 

Linker opt: /OUT:"dll/XXX.dll" /INCREMENTAL:NO /NOLOGO /DLL /DEF:"src\XXX.def" /DELAY:UNLOAD /MACHINE:X86 /ERRORREPORT:PROMPT mqrt.lib ..(other lib files)..

編集: dumpbinを使用すると、「HEADERS」、「EXPORTS」、「SYMBOLS」のサイズはすべて、Visual Studio を使用してコンパイルされた DLL よりも NMAKE を使用してコンパイルされた DLL の方が小さくなります。

4

1 に答える 1