1

我在 Visual Studio 2015 中用 C 语言编写了一个程序,里面有一个 masm 模块。我想将一些函数定义为 stdcall 而不是默认的 cdecl。有没有办法做到这一点?我的目标是跳过调用函数中的堆栈清理。

我有一个功能myModule.h

SIZE_T MyFunc(PVOID IN param1, PVOID IN param2);

但是通过__stdcall以下方式添加到函数签名:

SIZE_T __stdcall MyFunc(PVOID IN param1, PVOID IN param2);

产生链接错误:

LNK2019 未解析的外部符号 _MyFunc@8

函数的定义在 中myModule.asm,去掉__stdcall子句后,代码编译链接正确。

有谁知道如何以正确的方式做到这一点?

我还尝试通过更改来更改整个.asm文件以使用 stdcall 约定:

属性->配置属性->微软宏汇编器->高级->调用约定

但是当调用者清理堆栈时,这些函数仍然被称为 cdecl。

谢谢!

4

0 回答 0