我在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->配置属性 - > microsoft宏汇编程序 - > advanced->调用约定
但是当调用者清理堆栈时,函数仍然被称为cdecl。
谢谢!