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