将托管类的成员函数作为非托管函数的指针传递

时间:2019-04-02 12:15:32

标签: visual-c++ unmanaged

我正在尝试构建纯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);
}

这一行说“指向成员的指针对托管类无效”

0 个答案:

没有答案