我有一个包含C ++代码的DLL,它在Visual C#中完美运行。当我在C ++ DLL中创建一个fucton时,它会显示在Visual C#中,即使使用参数也可以调用它。但是,当我将函数指针添加为C ++ DLL中的参数之一时,Visual C#无法找到它。
C ++函数:
int TEST(int *func) // Works fine and shows up in visual C#.
{
return 0;
}
int TEST2(int (*func)()) // Works, however doesn't show up in Visual C#
{
return 0;
}
更新
当我从C#调用TEST2时,收到错误:'TEST2' is not supported by the language
答案 0 :(得分:2)
函数指针参数应该像这样声明:
int TEST2(int (*func)()) { /*...*/ }
答案 1 :(得分:0)
我很确定你需要*func
左右的括号来告诉编译器* func是指向函数int (*func)()
而不是int *(*func)()
的指针,这就是你所拥有的。