Компиляция VC ++ DLL с использованием NMAKE

У меня есть DLL-файл, скомпилированный с использованием Visual Studio 2005, и он прекрасно работает, когда я вызываю эти функции (в DLL) из программы на C #. Но если я скомпилирую ту же программу, используя NMAKE, она успешно скомпилируется, но не работает с программой на C #. Я получаюDLL НЕ НАЙДЕНА ИСКЛЮЧЕНИЕ» или же «DLL — КОРРУПЦИЯ».

П.С .: Я скопировал все опции компилятора и линкера из исходного файла проекта и использовал его в 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» в DLL, скомпилированной с помощью NMAKE, меньше, чем DLL, скомпилированной с помощью Visual studio!

0

Решение

Я понял свою ошибку. Я просто не включил часть фактической компиляции. Важная часть, я думаю.

Встраивание файла манифеста в DLL

Mt.exe Файл — это инструмент, который генерирует подписанные файлы и каталоги. я нашел эта ссылка и это было так полезно.

P.S: Я узнал это. Три важные части компиляции DLL:

  • КОМПИЛЯТОРА (cl.exe)
  • Линкер (link.exe)
  • Встраиваемый манифест (MT.exe)
0

Другие решения


По вопросам рекламы [email protected]