在阅读了很多有关使用插件的信息之后,这意味着在动态加载的共享库中使用C ++对象,结果大多是:不。
我自己做了一个简单的类加载器,可以使用相同的编译器正常工作,而插件实际上可以在同一项目中编译。我要做的是为可以注册的类注册工厂函数。这很好用,像Poco C ++之类的其他库也能做到这一点。
我对您的人员如何解决库边界上的ABI兼容性问题感兴趣。你们中的某些人可能会说,根本不使用插件,也不坚持使用纯C函数和类型。我尽可能地这样做,但是它是C ++,使用C ++的原因是因为它解决了一些在纯C语言中不可行的问题。
我知道,出于充分的原因可能永远不会有标准的C ++ ABI,所以我非常感兴趣如何在使用标准库和C ++插件时避免出现问题。
答案 0 :(得分:1)
“我很感兴趣您的人们如何解决库边界上的ABI兼容性问题”-我们确保每次都使用完全相同的编译器从头开始构建所有依赖项/库以及可执行文件。至少,这就是 I 所做的。