c# - 该语言不支持“MethodName”

标签 c# visual-c++ c++-cli interop native

因此,我正在通过为我的 native C++ 代码使用包装器类来实现一些 C++/cli 和 C# 互操作。

我似乎无法解决错误 'GetSharedData' 不受语言支持。我在网上搜索了解决方案并尝试了所有建议,但没有成功。

我的代码如下:

// c++/cli wrapper code
//
// this wraps an abstract native c++ class
public ref IHamWrapper
{
public:
    // default constructor
    IHamWrapper(){}
    // copy constructor
    IHamWrapper(const IHamWrapper%) {}
    // overloaded ()
    IHamWrapper operator () (NativeCode::INativeClass* data)
    {
        IHamWrapper ham;
        ham.hamData = data;
        return ham;
    }
    bool MethodA(){ wrappedObj->MethodA(); }
    bool MethodB(){ wrappedObj->MethodB(); }
    // etc...
internal:
    IHamWrapper(NativeCode::INativeClass* data)
    {
        wrappedObj = data;
    }
    NativeCode::INativeClass* wrappedObj;
};

public ref class StaticHamCalls
{
public:
    static IHamWrapper% GetSharedData(int param1, int param2)
    {
        return ham(NativeCode::GetSharedData(param1, param2));
    }
private:
    static IHamWrapper ham;
}

这就是我尝试在 C# 中调用它的方式

// C# code
public void testFunction()
{
    Int32 param1 = 5;
    Int32 param2 = 10;
    StaticHamCalls.GetSharedData(param1, param2);
}

最佳答案

您应该使用 ^(对象句柄),因为 C# 不支持 %(跟踪引用)。

关于c# - 该语言不支持“MethodName”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28973675/

相关文章:

c# - 以编程方式添加时,引用库中的 TraceSource 不记录

c++ - 在 Visual C++ 中与虚拟继承层次结构一起使用时放置新崩溃

windows - 混合来自不同版本的 Visual Studio 的库时的运行时问题

c# - 如何调试 MSBuild 依赖问题?

c++ - 重载 == 并与 nullptr 进行比较?

c++-cli - C++/CLI 二维数组分配失败

c# - ListView 列单击外部列

c# - 同时收集nameof和object

c++ - ->Release() 是在 COM 对象的析构函数上调用的吗?

c# - WCF - 在没有客户端调用的情况下发送回调