当我调用C ++函数时:
public ref class TEST_CLASS
{
void TEST(void (*func)())
{
(*func)()
}
};
在C#中:
TEST_CLASS t = new TEST_CLASS();
t.TEST(f);
我收到错误:
' TEST'语言不支持
导致此错误的原因是什么?我该如何解决?
答案 0 :(得分:6)
当我调用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();
}
};
挑选那个名字有点受伤。