我想将嵌套在类中的lambda函数指针传递给Windows API回调函数。我发现没有地方可以指定__stdcall
关键字。有些人告诉我,编译只支持__cdecl
,但在我使用nm命令转储obj文件之后,我发现编译将生成三个辅助函数(__stdcall
,__cdecl
,{{ 1}})同时。所以我的问题是,如何指定调用约定?
以下代码是我的测试代码。
__fastcall
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
auto func = [](){};
return 0;
}
答案 0 :(得分:17)
施展它:
WinApiFunc(static_cast<void(__stdcall *)()>(func));
首先将其存储到局部变量中:
void (__stdcall *funcp)() = func;
WinApiFunc(funcp);