当我调用C++函数时:
public ref class TEST_CLASS
{
void TEST(void (*func)())
{
(*func)()
}
};
在C#中:
TEST_CLASS t = new TEST_CLASS();
t.TEST(f);
我得到错误:
语言不支持"TEST"
是什么原因导致了这个错误?我该怎么修?
当我调用C++函数时:
这不是C++代码,您编写了一个C++/CLI类。注意ref class关键字。您声明该方法采用C函数指针。这在C++/CLI语言中很好,它允许您混合本机代码结构和托管代码结构,但对于C#或VB.NET这样的语言来说,并不好。他们坚持要求您使用函数指针的托管版本,即委托。
.NET框架中已经有一个委托类型与C函数指针MethodInvoker的签名匹配。但让我们假设你想扩展签名,并添加,比如说,你自己的参数和返回类型:
public ref class TEST_CLASS
{
public:
delegate void TEST_delegate();
void TEST(TEST_delegate^ func)
{
func();
}
};
取这个名字有点伤人。