Экспорт функций EXE

Тема в разделе "WASM.WIN32", создана пользователем zverywka, 29 окт 2009.

  1. zverywka

    zverywka New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2008
    Сообщения:
    21
    Всем доброго дня!

    Пытаюсь создать EXE с возможностью экспорта из него фунций. Использую MASM
    Столнулся со следующей проблемой, если указываю линкеру директиву /DEF, он собирает DLL, а не EXE, не смотря на то, что указан /RELEASE, а не /DLL.
    Как это можно пофискить?
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    переименовать файл и сбросить флажок в заголовке?
     
  3. zverywka

    zverywka New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2008
    Сообщения:
    21
    Да, как вариант. Но хотелось бы менее "хакерский" способ. Неужели нельзя создать exe с экспортом стандартными инструментами masm. Не верится как то...
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    ключ /DLL случаем не прописан?

    у меня собирается exe
     
  5. zverywka

    zverywka New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2008
    Сообщения:
    21
    Протупил, в самом def файле указывается имя библиотеки, у меня там было указано, что то вроде dll.dll.

    Всем спасибо, тема закрыта.
     
  6. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    там имя модуля, без расширения
     
  7. zverywka

    zverywka New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2008
    Сообщения:
    21
    Ага, спасибо

    Только один момент меня все таки смущает, у тебя при сборке exe с def файлом, устаналивается на нем флаг DLL в PE заголовке?
    У меня ставится...
     
  8. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Ставится
     
  9. zverywka

    zverywka New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2008
    Сообщения:
    21
    Т.е. все равно нужно хакать и снимать флаг руками. Не приятно.

    Возник, еще вопрос, возможно не совсем в тему, но...
    как правильно экспортировать DllMain, что бы при загрузке собранного таким образом EXE через LoadLibrary управление получала DllMain. Вычитал где то, что нужно экспортировать, а как правильно это сделать не нашел.
     
  10. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    EnrtyPoint == DllMain
     
  11. zverywka

    zverywka New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2008
    Сообщения:
    21
    Код (Text):
    1. %masm32%\bin\rc.exe /r %exe%.rc
    2. %masm32%\bin\ml.exe /c /coff /I "%masm32%\include" %exe%.Asm
    3. %masm32%\bin\Link.exe /SUBSYSTEM:WINDOWS /ENTRY:DllMain /FIXED:NO /DEF:%exe%.def /RELEASE /LIBPATH:"%masm32%\lib" %exe%.obj %exe%.res
    В .def
    Код (Text):
    1. LIBRARY dll
    2. EXPORTS
    3. DllMain
    Собираю так, но по LoadLibrary не грузится...
     
  12. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Возьмите линкер link.exe версии например 9.0....(к нему нужны будут доп. библиотеки msobj80.dll, msvcr90.dll, и т.д.)
    В def - файле пропиши:
    EXPORTS имя_функции
    У меня линкуется exe с экспортом.
    Какая версия линкера у Вас?
     
  13. zverywka

    zverywka New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2008
    Сообщения:
    21
    5.12.****
     
  14. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Ужос..1998г.
     
  15. zverywka

    zverywka New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2008
    Сообщения:
    21
    Ок, беру последний здесь http://masm32.com/
     
  16. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Посмотрите в командной строке link.exe /? 5.12 и 9, сравните функционал и ужаснитесь с чем работали.
     
  17. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Берите от последней Visual Studio, т.к. в masm используется стандартный инкрементальный линкер от мелкософта. В последних версиях линковщик старый видимо из лицензионных соображений.
     
  18. zverywka

    zverywka New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2008
    Сообщения:
    21
    Проверенный временем. :derisive:
    И exe c экспортным файлом делает, только ставит DLL флаг, который потом не позволяет запустить EXE например двойным кликом.
     
  19. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Ну как хотите..
     
  20. zverywka

    zverywka New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2008
    Сообщения:
    21
    Спасибо за заботу :derisive: