04-07-2021, 01:10 PM
gcc 会把 ExitProcess 的符号名变成 __imp__ExitProcess@4, 这是因为 ExitProcess(uint32_t) 的函数原型有两个 attribute.
__attribute__((dllimport)) 把 func 的符号名变成 __imp__func.
__attribute__((__stdcall__)) 把 func(int) 的符号名变成 _func@4.
两者一起使用,即 __attribute__((dllimport)) int __attribute__((__stdcall__)) func(int) 把 func 的符号名变成 __imp__func@4.
__attribute__((dllimport)) 把 func 的符号名变成 __imp__func.
__attribute__((__stdcall__)) 把 func(int) 的符号名变成 _func@4.
两者一起使用,即 __attribute__((dllimport)) int __attribute__((__stdcall__)) func(int) 把 func 的符号名变成 __imp__func@4.