GCC Как объявлять и связывать внешние функции Kernel32.LIB с помощью '@'

Содержимое файла Kernel.LIB

_ExitProcess@4, _GetStdHandle@4, _WriteConsoleA@20

  1. Для использования этого я проверил, чтобы объявить:

        void WINAPI ExitProcess(unsigned int ExitCode);
        HANDLE WINAPI GetStdHandle(DWORD nStdHandle);
        bool WINAPI WriteConsole@20(HANDLE hConsoleOutput, const void *lpBuffer DWOR......)  
    

    Но это не работа. (неопределенные ссылки).

  2. Я тестировал с "@n"

    void WINAPI ExitProcess@4(unsigned int ExitCode);
    HANDLE WINAPI GetStdHandle@4(DWORD nStdHandle);
    bool WINAPI WriteConsole@20(HANDLE hConsoleOutput, const void *lpBuffer DWOR......)
    

    Но этот синтаксис не допускается.

Я нашел ссылку на Kernel32.lib в ассемблере

Это решение хорошо, но только для носа, поэтому мой вопрос:

Как использовать это в C/C++ с G ++ / GCC?

extern _ExitProcess@4, _GetStdHandle@4, _WriteConsoleA@20

%define ExitProcess _ExitProcess@4
%define GetStdHandle _GetStdHandle@4
%define WriteConsoleA _WriteConsoleA@20

Потому что " @ 4 @ 20 " был запрещен синтаксис в C/C++

С уважением Себастьен ФАЙЕР

0 ответов

Другие вопросы по тегам