我在 c++/CLI 中有一个非托管(即不是 ref 类)类,在 c++/CLI 中实现了一个接口。两者都在同一个文件 Wrapper.h 我只想导出接口并访问本机 c++ 中的方法实现(派生类)。我在 Gordon Hogenson 的《C++/CLI 基础》和 Nishant Shivakumar Sir 的《C++/CLI in ACtion》两本书中寻找了这种情况。有什么解决方法吗?
编辑 下面是我在 c++/CLI (Wrapper.h) 中的界面。CSharp (c#) 项目包含托管接口 ICalculateArea 和实现它的类 Circle。仅供参考... C# 项目正在成功构建
#ifdef MANAGED_EXPORT
using namespace System;
using namespace CSharp;
#endif
#ifdef MANAGED_EXPORT
#define DLLAPI __declspec(dllexport)
#else
#define DLLAPI __declspec(dllimport)
#pragma comment(lib,"PATH.lib")
#endif
interface class IWrapper
{
double CalculateArea(double value);
};
实现此接口的 ref 类如下::(Wrapper.cpp)
#include"Wrapper.h"
using namespace CSharp;
ref class UnmanagedCircle:IUnmanagedCalculateArea
{
public:
virtual double CalculateAreaWrapper()
{
ICalculateArea^ getArea=dynamic_cast<ICalculateArea^>(gcnew Circle) ;
return getArea->CalculateArea();
}
virtual double GetRadiusWrapper()
{
Circle^ circle=gcnew Circle();
return circle->Radius;
}
virtual void SetRadiusWrapper(double value )
{
Circle^ circle=gcnew Circle();
circle->Radius=value;
}
};
现在我想在不同的原生 c++ 项目中访问 CalculateArea 方法?