Andrei Sosni..
10
它仅用于调用WinAPI函数.要将这样的Windows应用程序移植到Linux,您需要的不仅仅是将__stdcall定义为空:
#ifndef WIN32 // or something like that...
#define __stdcall
#endif
您还需要调用特定于Linux的API函数而不是Win32 API函数.根据Win32 API的特定部分和应用程序的大小(代码量),它可以介于中等难度和令人生畏之间.
应用程序将哪些特定功能标记为__stdcall?
实际上,GCC的Windows端口必须具有__stdcall,因为它应该能够为Win32平台生成符合规范的代码.但是因为在Linux下只有一个标准的调用约定,它与默认的编译器输出一致,所以不需要这个语句.
您的应用程序未在Linux下编译的原因几乎可以肯定是因为它引用了未在Linux下定义的Win32 API函数 - 您需要找到适当的Linux对应项.Win32 API和Linux GLibc API是非常不同的,不能轻易替换.
将应用程序移植到Linux的最简单方法可能是使用Wine,即以这种方式修改Windows代码,使其在Linux下的Wine下顺利运行.即使是最复杂的应用程序,如现代计算机游戏,也可以在Linux下运行.
当然,如果你真的希望它在Linux下本地运行,那么移植是唯一的出路.