DLL в MASM32

Тема в разделе "WASM.BEGINNERS", создана пользователем 0xJace, 10 сен 2011.

  1. 0xJace

    0xJace New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2010
    Сообщения:
    54
    Никогда не сталкивался, но вот понадобилось, помогите решит проблему.
    Накодил ДЛЛ. Нужно экспортировать функцию, имя которой совпадает с импортированной из другой ДЛЛ.
    Приведу на примере:
    Моя ДЛЛ вызывает MessageBoxA из user32.dll. Она должна экспортировать функцию тоже с именем MessageBoxA.
    Каким образом составить .def, что бы имя функции в коде было скажем xxMessageBoxA, а при компиляции в экспорте она называлась MessageBoxA?
     
  2. DarkWanderer

    DarkWanderer New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2006
    Сообщения:
    333
    Адрес:
    Барнаул.
    0xJace
    Подгружать LoadLibrary, GetProcAddress?
     
  3. 0xJace

    0xJace New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2010
    Сообщения:
    54
    В принципе вариант, но, прототип функции описан в include, от которого я не могу отказаться. Так что в моем случае не проканает :dntknw:
     
  4. DarkWanderer

    DarkWanderer New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2006
    Сообщения:
    333
    Адрес:
    Барнаул.
    Поддерживает, оказывается:
    Код (Text):
    1. The EXPORTS keyword can be on the same line as the first definition or on a preceding line. The .def file can contain one or more EXPORTS statements.
    2.  
    3. The syntax for export definitions is:
    4. other
    5. entryname[=internalname] [@ordinal [NONAME]] [PRIVATE] [DATA]
    6.  
    7. entryname is the function or variable name that you want to export. This is required. If the name you export is different from the name in the DLL, specify the export's name in the DLL with internalname. For example, if your DLL exports a function, func1() and you want it to be used as func2(), you would specify:
    8. other
    9. EXPORTS
    10. func2=func1
    Пишут, если имя экспортируемое отличается, то укажите, мол, internalname. Если это понадобилось, чтобы перехватить вызов функции, то не взлетит.
     
  5. 0xJace

    0xJace New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2010
    Сообщения:
    54
    Да-да-да, это самое оно! Спасибо большое.
    P.S. А можно ссылку на данную документацию?
     
  6. DarkWanderer

    DarkWanderer New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2006
    Сообщения:
    333
    Адрес:
    Барнаул.
    __tp://msdn.microsoft.com/en-us/library/28d6s79h(v=vs.80).aspx