促进链接问题 - 多个版本

时间:2016-04-21 23:16:08

标签: c++ matlab boost

我正在编写一个必须读取二进制.MAT文件的C ++应用程序。所以我需要使用libmat和libmex来做这个(注意我不是在使用MEX文件)。我也在尝试使用boost::program_options来处理解析命令行参数,因为这是一个非GUI应用程序。我正在使用CMake来处理我的构建环境。

我们正在使用的提升版本是1.59。但是,当我尝试在program_options中链接时,CMake正在使用MATLAB库找到boost::program_options库,而MATLAB库需要boost 1.49。然后,当我尝试运行已编译的应用程序时,由于使用了来自1.59的头文件,但是来自MATLAB的1.49版本的库,它崩溃了。有没有人有任何想法如何使用两个版本的boost,因为MATLAB不适用于1.59而且MATLAB没有包含1.49的包含文件。

1 个答案:

答案 0 :(得分:0)

如果您的应用程序崩溃,则意味着遗憾的是1.49和1.59不是二进制兼容的,因此唯一可行的方法是强制您的应用程序使用1.59。可能有两种选择:

  • 通过将BOOST_LIBRARYDIR变体设置为CMake,强制CMake使用1.59库。
  • 通过另外设置Boost_USE_STATIC_LIBS,强制CMake使用1.59库及其静态版本。

我实际上并没有使用CMake,并且FindBoost.cmake似乎并不总是最新的,所以我不能100%确定静态选项是否可行,但请试一试。