提升链接问题 - 多个版本
Boost Linking Issues - Multiple Versions
我正在编写一个必须读取二进制文件的C++应用程序。垫文件。所以我需要使用 libmat 和 libmex 来做到这一点(请注意,我没有使用 MEX 文件)。我还尝试使用boost::program_options
来处理解析命令行参数,因为这是一个非 GUI 应用程序。我正在使用 CMake 来处理我的构建环境。
我们正在使用的 boost 版本是 1.59。但是,当我尝试在program_options中链接时,CMake 发现boost::program_options
库与 MATLAB 库一起使用,而 MATLAB 库需要提升 1.49。然后,当我尝试运行编译的应用程序时,由于使用了 1.59 中的标头但使用了 MATLAB 1.49 副本中的库,它崩溃了。有没有人知道我如何使用两个版本的 boost,因为 MATLAB 不适用于 1.59,并且 MATLAB 不包含 1.49 的包含文件。
如果您的应用程序崩溃,这意味着 1.49 和 1.59 不兼容二进制,因此唯一可行的方法是强制应用程序使用 1.59。可能有两种选择:
- 强制 CMake 使用 1.59 库,方法是将变体设置为 CMake
BOOST_LIBRARYDIR
。 - 强制 CMake 使用 1.59 库及其静态版本,方法是另外设置
Boost_USE_STATIC_LIBS
。
我实际上并没有使用CMake,而且FindBoost.cmake似乎并不总是最新的,所以我不能100%确定静态选项会起作用,但请尝试一下。
相关文章:
- python 和 swig 版本兼容性问题
- 使用不同版本的 gcc 和 g++ 进行编译时出现问题
- Xcode(版本9.2(9C40B)):试图包括Boost时C 语义和链接器问题
- 将词法分析器字符串累加器移植到新版本的 Quex 时出现问题
- 将GCC版本升级到发行版附带的版本以外的版本是否有任何问题
- 在发布版本中删除类指针会导致内存问题
- Linux 中 gcc 4.3 版本的编译问题
- 具有状态的Microsoft编译器版本19.16.27024.1的问题
- 外部库Boost版本问题
- 将早期 MSVC 版本生成的代码重新生成为较新版本时可能遇到的问题
- gcc 4.8或更早版本对正则表达式有问题吗
- 提升链接问题 - 多个版本
- OpenGL 版本问题
- 如何在编译C++代码时解决一些版本控制问题
- C++STL版本控制问题+Boost
- 避免DLL版本控制问题
- Windows 10 home的c++ Windows版本问题
- 为什么我有一个兼容版本问题使用libpng与Xcode
- XP内嵌CRT版本问题.LoadLibraryEx失败
- 提升文件系统版本 3 问题