Всем доброго дня! Пытаюсь создать EXE с возможностью экспорта из него фунций. Использую MASM Столнулся со следующей проблемой, если указываю линкеру директиву /DEF, он собирает DLL, а не EXE, не смотря на то, что указан /RELEASE, а не /DLL. Как это можно пофискить?
Да, как вариант. Но хотелось бы менее "хакерский" способ. Неужели нельзя создать exe с экспортом стандартными инструментами masm. Не верится как то...
Протупил, в самом def файле указывается имя библиотеки, у меня там было указано, что то вроде dll.dll. Всем спасибо, тема закрыта.
Ага, спасибо Только один момент меня все таки смущает, у тебя при сборке exe с def файлом, устаналивается на нем флаг DLL в PE заголовке? У меня ставится...
Т.е. все равно нужно хакать и снимать флаг руками. Не приятно. Возник, еще вопрос, возможно не совсем в тему, но... как правильно экспортировать DllMain, что бы при загрузке собранного таким образом EXE через LoadLibrary управление получала DllMain. Вычитал где то, что нужно экспортировать, а как правильно это сделать не нашел.
Код (Text): %masm32%\bin\rc.exe /r %exe%.rc %masm32%\bin\ml.exe /c /coff /I "%masm32%\include" %exe%.Asm %masm32%\bin\Link.exe /SUBSYSTEM:WINDOWS /ENTRY:DllMain /FIXED:NO /DEF:%exe%.def /RELEASE /LIBPATH:"%masm32%\lib" %exe%.obj %exe%.res В .def Код (Text): LIBRARY dll EXPORTS DllMain Собираю так, но по LoadLibrary не грузится...
Возьмите линкер link.exe версии например 9.0....(к нему нужны будут доп. библиотеки msobj80.dll, msvcr90.dll, и т.д.) В def - файле пропиши: EXPORTS имя_функции У меня линкуется exe с экспортом. Какая версия линкера у Вас?
Берите от последней Visual Studio, т.к. в masm используется стандартный инкрементальный линкер от мелкософта. В последних версиях линковщик старый видимо из лицензионных соображений.
Проверенный временем. И exe c экспортным файлом делает, только ставит DLL флаг, который потом не позволяет запустить EXE например двойным кликом.