我有一个使用 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,使用 NMAKE 编译的 DLL 中的 "HEADERS","EXPORTS","SYMBOLS" 的大小都比使用 Visual Studio 编译的 DLL 小!