VTK链接程序问题记录
VTK编译
编译的话可以参考其他文章。如:VTK源码编译安装记录与教程(VS2019+QT5.15.2+PCL1.12.1+VTK9.1.0配置,超详细)_vtk配置-CSDN博客
编译的时候要注意:必须使用MSVC编译器。并在选择QT版本的时候,也要进行修改为MSVC64的编译器。。。这边一般情况下默认都是WinGw的,需要手动修改。
背景
在使用QtCreator进行链接VTK程序时,报错:这个提示一般是动态库没有找到。
pro文件种引入代码为:
INCLUDEPATH +=$$quote("E:\VTK\VTK9.0.1_Win10X86X64_Install\x64_install\include\vtk-9.0")
CONFIG(debug,debug|release){message(debug test)LIBS += -L$$quote("E:\VTK\VTK9.0.1_Win10X86X64_Install\x64_install\lib") -l*LIBS += -L$$quote("E:\VTK\VTK9.0.1_Win10X86X64_Install\x64_install\bin") -lvtkRenderingCore-9.0d
}else{message(release test11)}LIBS+= -LE:\VTK\vs_install\lib -l*
以上代码有几处错误。1. LIBS 后面如果使用quote的话不需要用-L 2.quote关键字用于引用目录, 等同于定义一个环境变量,里面可以直接指定动态库。3. 最后一种写法找不到动态库。。。但是我好像记得之前这样是可以的,现在不行了
呜呜,这个问题搞了我两天,之前一直以为是编译问题。
正确写法
INCLUDEPATH+=E:\VTK\vs_install\include\vtk-9.0
LIBS += -LE:\VTK\vs_install\bin
LIBS+= $$quote("E:\VTK\vs_install\lib\*lib") #可以
或者用LIBS +=-L路径 -l动态库 这样就需要把所有动态库有写一遍。可以使用命令行:
dir "D:\My3rdLib\PCL 1.12.1\3rdParty\VTK\lib\*d.lib" /b > libs_vtk_d.txt
导入到文件中,在加载。
使用CMAKE链接
#VTK START
include_directories(E:\\VTK\\vs_install\\include\\vtk-9.0)# 查找 VTK 库
file(GLOB VTKLIBS E:/VTK/vs_install/lib/*.lib)
message(VTKLIBS = ${VTKLIBS})
target_link_libraries(simple1 PUBLIC ${VTKLIBS} ) #当target_link_libraries出现多次时,需要明确指出用public#VTK end
CMAKE这边好像是不需要指定dll的路径这样可以直接运行。
扩展
在编译过程中,还有别的情况,在这也记录一下:
记录1
在编译输出的界面,这里看不到我们链接的动态库相关记录。
记录2
虽然我们Qt程序是以Debug运行的,但是这里的日志还是有release的相关信息。
如果要指定QT的编译版本的话:我们就需要以下代码来设置:
# CONFIG += release #这个release版本,以下是debug版本
# CONFIG +=debug
# QMAKE_CFLAGS_DEBUG += -g
# QMAKE_CXXFLAGS_DEBUG += -g