使用带有C++对象和标准库容器的插件系统
Using a plugin system with C++ object and standard library containers
在阅读了很多关于使用插件(这意味着在动态加载的共享库中使用C++对象(之后,结果主要是:不要。
- 特别是根本不要使用标准库容器或模板。
- 当您尝试使用C++插件时,您必须使用相同的编译器和相同的标志和相同的标准库。即便如此,也可能会出现崩溃。
我自己做了一个简单的类加载器,使用相同的编译器工作正常,插件实际上在同一项目中编译。我所做的是为可以调用的类注册工厂函数。这工作得很好,像 Poco C++ 这样的其他库也是如此。
我感兴趣的是你们如何解决跨库边界的 ABI 兼容性问题。你们中的一些人可能会说,根本不使用插件或坚持纯 C 函数和类型。我尽可能这样做,但它C++,使用 C++ 的原因是因为它解决了一些在纯 C 中不可行的问题。
我知道出于充分的理由可能永远不会有标准的 ABI C++所以我真的很感兴趣,您在使用标准库和C++插件时如何避免出现问题。
"我很感兴趣你们如何解决跨库边界的 ABI 兼容性问题" - 我们确保每次都使用完全相同的编译器从头开始构建所有依赖项/库以及可执行文件。 至少,我是这样做的。
相关文章:
- 从C++本机插件更新Vector3数组
- C++,系统无法执行指定的程序
- 使用CMake创建QML插件
- 在UNIX系统中使用DIR查找文件的字节大小
- 错误处理.将系统错误代码映射到泛型
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在C++游戏中与库存系统作斗争
- 停止cmake target_link_libraries将插件中静态库的两个对象文件链接到静态库本身
- 使用带有C++对象和标准库容器的插件系统
- 如何为模块化应用程序实现C++插件系统
- C++ / CMake :为许多'source plugins'制作插件系统
- 使用具有新信号槽语法的Qt插件系统在接口类中声明信号
- C++插件系统,其中插件继承自基类
- 如何用其他语言编写带有绑定的Qt插件系统
- Linux系统的有限插件体系结构
- 用户将如何在基于QML的插件系统中添加额外的功能
- 创建一个QML插件来运行系统命令
- 持续集成测试插件系统| Travis CI
- 用c++编写的文本编辑器插件系统