C# ';测试';该语言不支持 当我调用C++函数: public ref class TEST_CLASS { void TEST(void (*func)()) { (*func)() } };

C# ';测试';该语言不支持 当我调用C++函数: public ref class TEST_CLASS { void TEST(void (*func)()) { (*func)() } };,c#,methods,c++-cli,visual-c#-express-2010,C#,Methods,C++ Cli,Visual C# Express 2010,在C#中: 我得到一个错误: 该语言不支持“测试” 是什么导致了这个错误?我怎样才能修好它 当我调用C++函数: public ref class TEST_CLASS { void TEST(void (*func)()) { (*func)() } }; 这不是C++代码,你写了一个C++/CLI类。注意ref class关键字。您声明该方法采用C函数指针。这在C++/CLI语言中很好,它允许混合本机代码和托管代码构造,但对于C#或VB.NET这样的

在C#中:

我得到一个错误:

该语言不支持“测试”

是什么导致了这个错误?我怎样才能修好它

当我调用C++函数:

public ref class TEST_CLASS
{
    void TEST(void (*func)())
    {
        (*func)()
    }
};
<>这不是C++代码,你写了一个C++/CLI类。注意ref class关键字。您声明该方法采用C函数指针。这在C++/CLI语言中很好,它允许混合本机代码和托管代码构造,但对于C#或VB.NET这样的语言来说并不好。他们坚持使用函数指针的托管版本,即委托

在.NET framework中已经有一个委托类型与C函数指针MethodInvoker的签名相匹配。但假设您希望扩展签名并添加(比如)您自己的参数和返回类型:

public ref class TEST_CLASS
{
public:
    delegate void TEST_delegate();

    void TEST(TEST_delegate^ func)
    {
        func();
    }
};

选择那个名字有点伤脑筋。

TEST
真的是一个非常常见的词。至少要确保它不是一个预处理问题。尝试删除并重新添加C++项目中的引用,并重建这两个项目。请检查:C不能处理托管对象的指针,是“代码>(*FUNC)< /COD>?@ THKasHYAP感谢该建议,但是它没有用。检查这是否有帮助: