gpt4 book ai didi

c++ - 使用带有 C++ 对象和标准库容器的插件系统

转载 作者:行者123 更新时间:2023-11-28 04:31:03 25 4
gpt4 key购买 nike

在阅读了很多关于使用插件的内容后,这意味着在动态加载的共享库中使用 C++ 对象,结果主要是:不要。

  1. 尤其是根本不要使用标准库容器或模板。
  2. 当您尝试使用 C++ 插件时,您必须使用具有相同标志和相同标准库的相同编译器。即使那样,也可能会发生崩溃。

我自己做了一个简单的类加载器,它使用相同的编译器工作正常,插件实际上在同一个项目中编译。我所做的是为我的类注册可以调用的工厂函数。这工作得很好,像 Poco C++ 这样的其他库也是如此。

我很想知道你们如何解决跨库边界的 ABI 兼容性问题。你们中的一些人可能会说,根本不要使用插件或坚持使用纯 C 函数和类型。我尽可能这样做,但它是 C++,使用 C++ 的原因是因为它解决了一些在纯 C 中不可行的问题。

我知道出于充分的理由可能永远不会有标准的 C++ ABI,所以我真的很感兴趣您在使用标准库和 C++ 插件时如何避免问题。

最佳答案

“我对你们如何解决跨库边界的 ABI 兼容性问题很感兴趣”——我们确保每次都使用完全相同的编译器从头开始构建所有依赖项/库以及可执行文件。至少,这就是所做的。

关于c++ - 使用带有 C++ 对象和标准库容器的插件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52897284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com