fasm entry point coff

Тема в разделе "WASM.ASSEMBLER", создана пользователем letopisec, 31 окт 2007.

  1. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    Как заставить fasm генерировать COFF obj, чтобы можно было потом его линковать c либами.

    LINK : fatal error LNK1561: entry point must be defined

    ?
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    link.exe /entry:start если линкуешь прогу. Если просто либу, тогда используй lib.exe или link.exe /lib
     
  3. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    спасибо.
    А можно че-нить типа такого же:

    cl /c main.c
    link main.obj lib1.lib lib2.lib

    здесь же не надо выставлять опцию /entry линкеру.
    ?
     
  4. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    нельзя. в сях создается автоматическая точка входа, которая делает переход на (win)main. какая проблема указать /entry?
     
  5. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    Проблем нет, это я так.

    А откуда такая проблема.
    в исходнике пишу:

    Код (Text):
    1. extrn g_print
    2. ....
    3. ccall g_print, szExitMsg
    И получаю при линковке, unresolved external g_print.

    Хотя при линковке объектника произошедшего из сишного кода, при линковке с теми же библиотеками проблем нет.
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    letopisec
    Читаем о соглашениях имён и манглинге.

    Можно. В сорце указать точку входа директивой entry.
     
  7. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    >Читаем о соглашениях имён и манглинге.

    Ага я подозревал что-то такое, просто нехотелось долго думать :)
    И что мне теперь всегда так делать:
    Код (Text):
    1. extrn "_g_print" as g_print
    или есть способ проще, директивой какой-нибудь?

    >Можно. В сорце указать точку входа директивой entry.

    До этого-то я и сам догадался, только вот entry не работает для COFF - illegal instruction.

    Спасибо, все линкуется теперь.
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    letopisec
    А, да. Точка входа задаётся комментарием линкеру (для MS link в виде "/entry:label").
    Я точно не помню (примеры есть на форуме фасма), но посмотри в сторону "section linkinfo".

    А вот по поводу манглинга - ну напиши макрос вида "extern g_print", который на выходе давал бы вышеуказанный код.