【发布时间】:2015-12-08 03:16:00
【问题描述】:
我有一个非常令人困惑的问题(至少对我来说 :))链接到 vtk 库的问题。在一台台式电脑上,我的代码编译没有任何错误。我在另一台电脑上进行了相同的安装,但是那里出现了链接器错误。
在两台电脑上都安装了:itk 4.8、vtk 6.3 和 cmake 3.3。两者都是 debian 系统(8.1 - jessie)。
[ 96%] 链接 CXX 可执行项目
CMakeFiles/project.dir/main.cpp.o:在函数vtkRenderingVolume_AutoInit::~vtkRenderingVolume_AutoInit()':
/usr/local/include/vtk-6.3/vtkRenderingVolumeModule.h:44: undefined reference tovtkRenderingVolumeOpenGL_AutoInit_Destruct()'
CMakeFiles/project.dir/main.cpp.o:在函数vtkRenderingVolumeOpenGL_ModuleInit::~vtkRenderingVolumeOpenGL_ModuleInit()':
project/main.cpp:4: undefined reference tovtkRenderingVolumeOpenGL_AutoInit_Destruct()'
CMakeFiles/project.dir/main.cpp.o:在函数vtkRenderingVolumeOpenGL_ModuleInit':
project/main.cpp:4: undefined reference tovtkRenderingVolumeOpenGL_AutoInit_Construct()'
CMakeFiles/project.dir/main.cpp.o:在函数vtkRenderingVolume_AutoInit':
/usr/local/include/vtk-6.3/vtkRenderingVolumeModule.h:44: undefined reference tovtkRenderingVolumeOpenGL_AutoInit_Construct()'
libcommon.a(datareader.cpp.o):在函数vtkRenderingVolume_AutoInit':
/usr/local/include/vtk-6.3/vtkRenderingVolumeModule.h:44: undefined reference tovtkRenderingVolumeOpenGL_AutoInit_Construct()'
collect2:错误:ld 返回 1 个退出状态
CMakeFiles/project.dir/build.make:326:目标“项目”的配方失败
我尝试通过添加来修复这些错误
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL);
到我使用 vtk 库的文件,但它没有帮助。
有谁知道我做错了什么?我想知道,为什么它可以在其中一台电脑上运行,而不能在另一台电脑上运行。
非常感谢!
更新:我通过切换
的位置解决了我的问题find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
在 CMakeLists 中结束。但是,有谁知道,为什么它对不同的电脑有如此巨大的差异?
【问题讨论】: