Переименовать импортируемые функции

Тема в разделе "LANGS.C", создана пользователем Maratyszcza, 6 мар 2008.

  1. Maratyszcza

    Maratyszcza New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    32
    Можно ли (и если да, то как) создать библиотеку импорта, которая бы экспортировала функции не под теми именами, под которыми они в находятся в DLL. Чтобы было попонятнее приведу пример:
    В user32.dll есть функции _MessageBoxA@16 и _MessageBoxW@16. Я хочу, чтобы моя программа могла пользоваться ими как
    int MessageBox(HWND, LPCSTR, LPCSTR, UINT);
    int MessageBox(HWND, LPCWSTR, LPCWSTR, UINT);
    (замечу, что никакого extern "C"). Я хочу, чтобы библиотека импорта экспортировала функции под задекорироваными C++ именами, а импортировала из user32.dll как _MessageBoxA@16 и _MessageBoxW@16. Таким образом, можно было бы сымитировать перегрузку WinAPI функций
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    посмотри таблицу экспорта - нет там таких функций. эт заморочки компилятора, чтобы он знал сколько параметров юзает функция и тип вызова.
    не нравится - ничего не поделаешь, либо меняй компилятор, либо привыкай.
     
  3. Maratyszcza

    Maratyszcza New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    32
    Вообщем проблема решена с помощью такого файла для Fasm

    Код (Text):
    1. format MS COFF
    2.  
    3. extrn "?MessageBoxW@user@winapi@yk@@YGHPAVWindowDescription@123@PB_W1UMessageBoxFlags@123@@Z" as MessageBoxW:DWORD
    4. public MessageBoxW as '?MessageBox@user@winapi@yk@@YGHPAVWindowDescription@123@PB_W1UMessageBoxFlags@123@@Z'
    5.  
    6. extrn "?MessageBoxA@user@winapi@yk@@YGHPAVWindowDescription@123@PBD1UMessageBoxFlags@123@@Z" as MessageBoxA:DWORD
    7. public MessageBoxA as '?MessageBox@user@winapi@yk@@YGHPAVWindowDescription@123@PBD1UMessageBoxFlags@123@@Z'
     
  4. letika

    letika New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    28
    Maratyszcza
    Как вариант - imp2lib.