GCC如何使用'@'声明和链接extern Kernel32.LIB函数

时间:2016-07-24 14:55:49

标签: gcc compilation g++ undefined-reference djgpp

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......)
    

    但不允许使用此语法。

  3. 我找到了Linking to Kernel32.lib in assembler

    此解决方案很好,但仅限于nasm,我的问题是:

    如何在 C ++ C 中使用 G ++ / GCC

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

    因为C / C ++中不允许使用“ @ 4 @ 20 ”语法

    此致 Sebastien FAVIER

0 个答案:

没有答案