我在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约定:

properties-> configurations properties-> microsoft macro assembler-> advanced-> calling convention

但是当调用者清理堆栈时,函数仍被称为cdecl .

谢谢!