[英]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.