我正在创建一个 CLR 项目来访问我的 C 代码。一切正常,直到其中一个 C 函数需要回调。我不确定如何解决这个问题,尝试了几种不同的方法。
C:
typedef void(*logger_callback_t)(const char *, int);
鉴于上述 C 语言,我如何分配此回调?我尝试创建一个函数并引用它但出现错误。如果我将 C++ 函数放在 header 中,它会给出“指向成员的指针对于托管类无效”。如果我把它放在函数旁边,我会得到未声明的标识符
C++:
logger_callback_t logger = &dummy_logger_callback;
void dummy_logger_callback(const char *, int)
{
}
最佳答案
我不是很清楚这个问题,但看起来这是一个声明顺序问题。一种选择可能是在声明函数之前转发声明回调。
static logger_callback_t logger;
static void dummy_logger_callback(const char *, int)
{
}
logger = dummy_logger_callback;
这应该在 C 上下文中工作,但如果您的函数是类的方法或您的变量是类的成员,这可能会变得更加复杂。变量和函数的预期存储类(static
、extern
等)也很复杂。您能否更具体地说明设置?
关于c++ - 访问非托管代码中函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23246743/