'MethodName' 语言不支持
'MethodName' is not supported by the language
因此,我正在通过对我的本机 C++ 代码使用包装器 class 来实现一些 C++/cli 和 C# 互操作。
我似乎无法解决错误 'GetSharedData' is not supported by the language
。我在网上搜索了解决方案并尝试了所有建议,但没有成功。
我的代码如下:
// 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++ 代码使用包装器 class 来实现一些 C++/cli 和 C# 互操作。
我似乎无法解决错误 'GetSharedData' is not supported by the language
。我在网上搜索了解决方案并尝试了所有建议,但没有成功。
我的代码如下:
// 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# 不支持 %
(跟踪引用)。