繁体   English   中英

使用抽象接口的C ++编译器独立DLL

[英]C++ compiler independent DLLs using abstract interface

我按照CodeProject上的指南进行操作,并构建了一个具有抽象接口的DLL,并使用extern "C"命令以及__declspec(dllexport)__cdecl导出了工厂函数,并且通过这样做,本文声称该DLL变得干净而独立于编译器接口。 但是,当在两个不同版本的g ++上使用DLL时,非标准ABI会通过DLL调用创建标准c ++问题。 除了CodeProject文章,我还使用了MinGW的文章,以便能够创建该类的多个实例。

那么如何使DLL编译器独立呢? 如果这不可能,那么是否可以在DLL中实例化一个类并使函数成为纯C,但调用与该实例化类相关的C ++函数呢?

您是否尝试过精确再现此处给出的示例? 那是什么失败呢? 您不仅要考虑您的类,而且不能直接使用任何其他类(如std::string 也就是说,我不会尝试重新发明轮子,而是使用某种组件框架(例如COM)。

要回答第二部分,请考虑以下问题:

// internal class
struct X
{
    void jump();
};


// compiler-independent C interface
struct X;
struct X* x_alloc(void);
void x_jump(struct X* x, float height);
void x_free(struct X* x);

这可行。 我不知道您到底尝试了什么,什么对您没有用,只是信息不足。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM