我将尝试编写一个C++程序,包括一个头文件和一个cpp文件,并且我正在使用SimConnect dll。假设我有一个名为“MyClass”的类,其中包含一些函数。在我的某个函数内部,我调用了这个SimConnect函数:
据我所理解,我应该将这个函数作为第二个参数发送给我之前提到的SimConnect函数
我阅读了SimConnect SDK中附带的一个示例,他们正在做与我相同的事情,但是我遇到了错误,而他们没有。唯一不同的是,他们把整个代码写在一个页面中,而我试图将代码分成头文件和主体。
当我尝试按照上述方法编写时,写入以下内容:
SIMCONNECTAPI SimConnect_CallDispatch(HANDLE hSimConnect, DispatchProc pfcnDispatch, void * pContext);
另外,我写了这个函数:
void __stdcall MyClass::myDispatchProc(SIMCONNECT_RECV* pData, DWORD cbData, void *pContext)
据我所理解,我应该将这个函数作为第二个参数发送给我之前提到的SimConnect函数
SimConnect_CallDispatch
。我阅读了SimConnect SDK中附带的一个示例,他们正在做与我相同的事情,但是我遇到了错误,而他们没有。唯一不同的是,他们把整个代码写在一个页面中,而我试图将代码分成头文件和主体。
当我尝试按照上述方法编写时,写入以下内容:
SimConnect_CallDispatch(hSimConnect, myDispatchProc, NULL);
我收到了这个错误(编译器在myDispatchProc
部分出现了问题):
argument of type "void (__stdcall TransmitData::*)(SIMCONNECT_RECV *pData, DWORD cbData, void *pContext)" is incompatible with parameter of type "DispatchProc"
很明显,这是一个类似于类型转换的错误。正如我所说,如果我没有将程序拆分为两个单独的文件,这段代码本来可以正常工作的。现在为什么它不起作用呢?
DispatchProc
? - melpomene