64位Windows DLL的WINE包装器spec文件编写疑问
WINE 64位DLL Spec文件调用约定说明
在64位Windows平台上,所有函数都遵循统一的x64调用约定,WINE对64位DLL的spec文件处理也完全适配这一规则,具体说明如下:
- 64位场景下,spec文件中的
functype字段(即32位里的stdcall、cdecl这类标识)可以直接省略,不需要指定任何调用约定类型。 - 对应你给出的32位示例:
64位版本的spec写法简化为:@ stdcall foo (long ptr) Proxyfoo@ foo (long ptr) Proxyfoo
之所以不需要指定functype,是因为64位Windows不存在多种调用约定的区分,WINE会自动按照x64调用约定处理函数的参数传递、栈帧清理等逻辑,无论原DLL中的函数是普通C函数还是C++成员函数,省略functype字段都能正常生成正确的包装器。
内容的提问来源于stack exchange,提问作者Morag Hughson
相关产品推荐
相关产品推荐

