提升链接问题 - 多个版本

Boost Linking Issues - Multiple Versions

本文关键字:版本 问题 链接      更新时间:2023-10-16

我正在编写一个必须读取二进制文件的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%确定静态选项会起作用,但请尝试一下。