小编Atn*_*nas的帖子

CMake:链接两个预编译的库,这些库依赖于不同版本的第三个库

我正在尝试编译一个项目,我正在链接两个库(PCL和Matlab)的预编译版本,这些库是针对不同版本的Boost(1.58和1.56)编译的.

在构建项目时,这给了我很多警告:

Cannot generate a safe runtime search path for target Test because 
files in some directories may conflict with libraries in implicit directories:

runtime library [libpng12.so.0] in /usr/lib/x86_64-linux-gnu may be hidden 
by files in:
  /usr/local/MATLAB/R2017b/bin/glnxa64
Run Code Online (Sandbox Code Playgroud)

等等其他库(libtiff,libfreetype,libexpat,libxml2,libQt5OpenGL ......),但没有提升.

当我编译并运行我的程序时,我收到此错误

*** Error in `/home/user/Test': free(): invalid pointer: 0x0000000000bf36a8 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f9cf1c507e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7f9cf1c5937a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f9cf1c5d53c]
/lib/x86_64-linux-gnu/libc.so.6(__cxa_finalize+0x9a)[0x7f9cf1c1336a]
/usr/local/MATLAB/R2017b/bin/glnxa64/libboost_filesystem.so.1.56.0(+0x7646)[0x7f9ce9eda646]
Run Code Online (Sandbox Code Playgroud)

我怀疑这是因为它将所有库添加到同一个搜索路径并将PCL链接到Matlab的Boost版本,它提供了错误和警告.我花了很多时间试图让它连接而不会崩溃,但无济于事.

灵感来自:target_link_libraries调用后链接路径混乱 我尝试添加Matlab使用add_library,

add_library(eng STATIC IMPORTED)
set_property(TARGET eng PROPERTY IMPORTED_LOCATION ${Matlab_ENG_LIBRARY})
set_property(TARGET eng PROPERTY INTERFACE_INCLUDE_DIRECTORIES /usr/local/MATLAB/R2017b/bin/glnxa64/)
target_link_libraries(${PROJECT_NAME} eng)
Run Code Online (Sandbox Code Playgroud)

(以及这方面的许多变化)但我一直无法找到解决问题的组合,因为我也遇到了与提问者相同的问题.

似乎另一个问题是关于一个非常类似的问题,但是没有回答 MATLAB库与现有库冲突 …

c++ matlab boost cmake point-cloud-library

8
推荐指数
0
解决办法
813
查看次数

标签 统计

boost ×1

c++ ×1

cmake ×1

matlab ×1

point-cloud-library ×1