我正在尝试从Visual 2013中的一个供应商构建此示例代码。示例中没有项目文件,只有源代码。
代码定义了一个回调函数SpatialDataHandler,它被标记为__stdcall。函数被传递给供应商的API函数,这需要一个__stdcall参数。然而,我得到了以下错误(编译为C):
Error 1 error C2440: 'function' : cannot convert from 'int (__cdecl *)(CPhidgetSpatialHandle,void *,CPhidgetSpatial_SpatialEventDataHandle *,int)' to 'int (__stdcall *)(CPhidgetSpatialHandle,void *,CPhidgetSpatial_SpatialEventDataHandle *,int)' n:\phidget\spatial-capture\spazcap\spazcap.cpp 60 1 spazcap该错误消息的tl;dr是:无法将cdecl函数参数转换为stdcall参数。(编译为C++本质上会产生相同的错误,但C2664而不是C2440。)我已经检查了文档,__stdcall关键字似乎在正确的位置,并且没有自己生成错误,所以WTH?
发布于 2015-11-23 20:29:14
__stdcall在宏中被定义为nothing。
#ifndef WIN32
#define __stdcall
#endif所以,VC又回到了_cdecl,这是默认的。
https://stackoverflow.com/questions/33878935
复制相似问题