我在 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。
谢谢!