我按照CodeProject的指南构建了一个带有抽象接口的 DLL,并使用extern "C"
命令导出了工厂函数__declspec(dllexport)
,并且__cdecl
通过这样做,文章声称 DLL 变得独立于编译器,具有干净的接口。但是,当在两个不同版本的 g++ 上使用 DLL 时,非标准 ABI 在调用 DLL 时会产生标准 c++ 问题。除了 CodeProject 文章之外,我还使用了MinGW的一篇文章,以便能够创建该类的多个实例。
那么如何使 DLL 编译器独立呢?如果这是不可能的,那么是否可以在 DLL 中实例化一个类并使函数成为纯 C,但调用与实例化类相关的 C++ 函数?