我有一个插件,它定义了一个像这样的回调设置器:
extern "C" __declspec(dllexport) void set_callback(void (*fn)(void));
和用托管C ++编写的插件调用者类,它引用了回调:
typedef void (CALLBACK* _set_callback)(void (*fnc)(void));
public ref class Caller {
static void changeHandler(void);
}
void Caller::register() {
_set_callback callback;
callback((void (__cdecl *)(void))changeHandler);
}
在将changeHandler(void)
定义为静态方法之前,一切正常。
如何将其更改为使用非静态方法?
答案 0 :(得分:1)
编辑:看来我误解了这个问题。鉴于set_callback
的当前声明,您无法删除static
修饰符 - 这将使其成为成员函数(需要对象操作)并且您无法传递成员函数指向只接受普通函数指针的函数的指针。