【问题标题】:is it possible to link a library compiled with c++11 to a code which needs to be compiled with c++03是否可以将使用 c++11 编译的库链接到需要使用 c++03 编译的代码
【发布时间】:2016-06-20 11:11:10
【问题描述】:

我有可以用 c++03 编译但不能用 c++11 编译的 Ogre 渲染代码。

我有可以用 c++11 编译但不能用 c++03 编译的子弹物理代码。

现在我想连接它们。是否可以用 c++11 编译项目符号代码并从要用 c++03 编译的 Ogre 代码调用生成的库。

我的 gcc 版本 4.8.4

OGRE 是静态构建的。 Bullet 也是静态构建的。

【问题讨论】:

  • Bullet 库将构建为静态库还是共享库?如果它是一个共享库,那么它应该可以正常工作,除非您想调用某个函数或使用某些依赖于特定 C++11 功能的类。如果它是一个静态库,那么除非您链接到具有该库所需的 C++11 功能的标准库,否则这是不可能的。
  • 请参阅上面的编辑

标签: c++11 compilation c++03 ogre bulletphysics


【解决方案1】:

是的,只要您使用相同的 libstdc++ ABI 即可,并且随着 g++ 5.1 引入了新的 C++ 11 ABI(请参阅using dual abi),您应该没问题。

编辑:请参阅this answer 以获得更完整的答案,特别是关于 ABI 与 g++ 4.7.0 和 g++ 4.7.1 的不兼容性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 2018-02-14
    • 1970-01-01
    相关资源
    最近更新 更多