64 位 DLL wine 包装器的规范文件

问题描述 投票:0回答:1

尝试为 Windows 64 位 DLL 的 WINE 包装器创建规范文件。

在 32 位等效项目中,规范文件可能包含如下内容:

@ stdcall foo (long ptr) Proxyfoo

在上面的示例中,

functype
stdcall
,并且WineLib用户指南建议
functype
的所有可能值如下:-

FUNCTYPE 应为以下之一:

  1. pascal - 用于 Win16 函数
  2. stdcall - 用于普通 Win32 函数
  3. cdecl - 使用 C 调用约定的 Win32 函数
  4. varargs - 对于采用可变数量参数的 Win32 函数
  5. thiscall - 使用 C++ 调用约定的 Win32 函数

那么 64 位函数应该使用什么值呢?或者可以直接省略吗?用户指南并未暗示它是可选项目。

x86-64 64-bit 32bit-64bit wine winelib
1个回答
0
投票

在 x86-64 中,

stdcall
cdecl
thiscall
都是相同的调用约定。
varargs
也是相同的调用约定,但 Winelib 需要知道该函数可以有任意数量的参数。

我会在你的spec文件中使用

cdecl
,因为它是所有现代C编译器的默认调用约定。这样,如果在某个时候您决定将 DLL 编译为 32 位,则spec文件可能无需任何更改即可工作。

© www.soinside.com 2019 - 2024. All rights reserved.