C++ cli c++;在包装器中使用抽象类的本机代码
我需要为我的非托管代码实现一个c#GUI。因此,我设计了一个包装器来处理我的本机代码,但这并不管用 我有一个方法需要创建一个抽象类的实例,但我不知道如何处理它 首先,C++类中,我使用了抽象类:C++ cli c++;在包装器中使用抽象类的本机代码,c++-cli,polymorphism,abstract-class,wrapper,C++ Cli,Polymorphism,Abstract Class,Wrapper,我需要为我的非托管代码实现一个c#GUI。因此,我设计了一个包装器来处理我的本机代码,但这并不管用 我有一个方法需要创建一个抽象类的实例,但我不知道如何处理它 首先,C++类中,我使用了抽象类: class Interface abstract { public: Interface (void); public: ~Interface (void); public: virtual double Get() =
class Interface abstract
{
public: Interface (void);
public: ~Interface (void);
public: virtual double Get() = 0;
};
根据我当前的应用程序,我使用了一个ClassSpecific1和一个ClassSpecific2,并且我从抽象类继承了每个类的函数
class ClassSpecific1 : public Interface
{
public: ClassSpecific1 (void);
public: ~ClassSpecific1 (void);
private: double Get();//based on the abstract class
};
class ClassSpecific2 : public Interface
{
public: ClassSpecific2 (void);
public: ~ClassSpecific2 (void);
private: double Get();//based on the abstract class
};
后来我使用了另一个类,它作为一个普通类工作,并将ClassSpecific1或ClassSpecific2与抽象类的实例一起使用
class ClassAPI
{
public: ClassLaserAPI(void);
public: ~ClassLaserAPI(void);
public: double Get(Interface *objToInterface);//This Get() calls the Get() in ClassSpecific1 or ClassSpecific2
};
在这里之前,一切似乎都很好。我已经测试了所有的东西,并按预期工作。我最大的问题是,我不知道如何使我的方法
Get(Interface*objpointerface)
从ClassAPI进入包装器。为了能够在包装器上创建实例**(Interface*objPointerface)**
,我是否需要先为抽象类制作一个包装器
这就是我到目前为止所拥有的,我希望有人能给我一些帮助,我正在迷茫如何继续
我也遇到了同样的问题,并通过以下主题解决了这个问题: 我也在使用一个非托管的抽象类,通过遵循链接中概述的技巧,我的工作正常了。最后,我发现了一些错误需要修复,并通过将非托管项目中的链接器选项更改为不使用/clr编译,并且只有包装器项目使用/clr编译来修复这些错误
发布输出错误可能有助于澄清您遇到的一些问题…核心问题是您的接口是非托管接口,您无法通过它调用托管代码。使用<代码>接口类< /Cord>关键字(对于C++或CLI,不管怎样,如果你想在这里寻求帮助,请避免C++)。汉斯谢谢你的评论。这里没有C++ +CLI。什么版本的Visual C++?
namespace API
{
public __gc class APIManaged
{
public: APIManaged(void);
public: ~APIManaged(void);
/** Unmanaged pointer to ClassAPI
*
*/
private: ClassAPI __nogc* cAPI;
public: double Get(Interface __nogc* objInterface);
};