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

Discussion in 'LANGS.C' started by Maratyszcza, Mar 6, 2008.

  1. Maratyszcza

    Maratyszcza New Member

    Blog Posts:
    0
    Joined:
    Sep 29, 2006
    Messages:
    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

    Blog Posts:
    0
    Joined:
    Jun 5, 2004
    Messages:
    4,336
    Location:
    Russia
    посмотри таблицу экспорта - нет там таких функций. эт заморочки компилятора, чтобы он знал сколько параметров юзает функция и тип вызова.
    не нравится - ничего не поделаешь, либо меняй компилятор, либо привыкай.
     
  3. Maratyszcza

    Maratyszcza New Member

    Blog Posts:
    0
    Joined:
    Sep 29, 2006
    Messages:
    32
    Вообщем проблема решена с помощью такого файла для Fasm

    Code (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

    Blog Posts:
    0
    Joined:
    Apr 10, 2007
    Messages:
    28
    Maratyszcza
    Как вариант - imp2lib.