我正在尝试构建纯C ++ SDK的包装器类。建立包装器类的目的是在C#.NET或VB.NET中使用DLL,以简化Winform项目的编程。本机SDK中的某些函数接受回调函数作为函数指针,而我无法传递托管类的成员函数。
这是本机函数的定义。
Frontend -> calling the real backend API
这是我的C ++托管代码
long sr_enbhdlr(long ddd, unsigned long evt_type, long (*handler)(unsigned long param))
#include "stdafx.h"
#include <windows.h>
#include <srllib.h>
#include <dxxxlib.h>
#include "SRL.h"
long Dialogic::SRL::dx_handler(unsigned long evhandle)
{
Debug::WriteLine("dx_handler() called, event is 0x%x\n", sr_getevttype(evhandle));
return(0); /* tell SRL to dispose of the event */
}
bool Dialogic::SRL::enableEventHandler() {
int SRLMode = SR_STASYNC | SR_POLLMODE;
if (sr_setparm(SRL_DEVICE, SR_MODELTYPE, &SRLMode) != 0) {
SRL::lastError = gcnew System::String(ATDV_ERRMSGP(SRL_DEVICE));
return(false);
}
/* Enable a handler for all events on all devices */
if (sr_enbhdlr(EV_ANYDEV, EV_ANYEVT, SRL::dx_handler) == -1)
{
Debug::WriteLine("Error: could not enable handler\n");
return (false);
}
return (true);
}
这一行说“指向成员的指针对托管类无效”