linux编译 __stdcall,Linux中有STDCALL吗?

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下本地运行,那么移植是唯一的出路.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值