Траблы вызова функции из dll (несовместимость компиляторов ?)

Тема в разделе "WASM.BEGINNERS", создана пользователем macror, 16 фев 2008.

  1. macror

    macror New Member

    Публикаций:
    0
    Регистрация:
    16 фев 2008
    Сообщения:
    2
    Следующая проблема при линковке в Масме линкер выдает
    ошибку внутри lib файла код ?Out32@@YGXFF@Z имя вызываемой функции Out32
    VC++ с этой dll работает корректно но ругается на dll созданные в Mасме
    код lib файла _Out32@8 созд-го Masm
    КАК их подружить ?
     
  2. Ursus

    Ursus Member

    Публикаций:
    0
    Регистрация:
    15 мар 2006
    Сообщения:
    238
    Адрес:
    Russia
    Различные компиляторы используют разные схемы декорирования имен (mangling).
    Т.ч., если нужно кросс-компиляторное решение, то экспортируемые функции следует определять примерно так:

    Код (Text):
    1. extern "C" __stdcall MyFunc();
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    http://wasm.ru/forum/viewtopic.php?pid=110851#p110851
     
  4. macror

    macror New Member

    Публикаций:
    0
    Регистрация:
    16 фев 2008
    Сообщения:
    2
    ВСЕМ БОЛЬШОЕ СПАСИБО ,дело было в замангленом имени. Параметры получилось передать
    только через push ,а invoke пока не работает (не могу указать количесво аргументов)