配置报错
编译报错提示(LNK2019或LNK2001)
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2019 无法解析的外部符号 “__declspec(dllimport) public: __cdecl QVTKOpenGLNativeWidget::QVTKOpenGLNativeWidget(class QWidget *,class QFlags)(_imp??0QVTKOpenGLNativeWidget@@QEAA@PEAVQWidget@@V?$QFlags@W4WindowType@Qt@@@@@Z),函数"public: void __cdecl MainWindow::initwindow(void)” (?initwindow@MainWindow@@QEAAXXZ)中引用了该符号
原因
- 可能没有正确地将包含这个函数的库添加到项目链接器设置中;
- 可能正在试图调用一个不存在的库函数。例如,如果你正在使用的库版本不支持你正在尝试调用的特定函数,则可能会发生这种情况;
- 可能在代码中声明了一个函数,但没有提供它的实现。
分析可能是因为库配置或库版本的问题,最后排查发现是VTK库配置有问题,但是没有从版本和CMakeLists中发现问题,先用万能解决法解决运行。
配置相关报错的万能解决方法
以VS2019、QT5.15.2、VTK9.2的配置为例:
1. 附加包含目录
项目属性 -> C/C++ -> 常规 -> 附加包含目录:(选择build/Debug目录下的include文件夹)
...\VTK\debug\include\vtk-9.2
2. 附加库目录
项目属性 -> 链接器 -> 常规 -> 附加库目录:(选择build目录下的lib文件夹里选到Debug目录)
...\VTK\build_debug\lib\Debug;
3. 添加附加依赖项
项目属性 -> 链接器 -> 输入 -> 附加依赖项:(添加build目录下的lib文件夹里Debug目录中所有lib文件名)
位置:...\VTK\build_debug\lib\Debug
快速获取该文件夹下所有文件名的方法:
新建txt -> 输入dir *.lib /b > all_lib.txt
-> 后缀名.txt
改写为.bat
-> 双击生成all_lib.txt
文件 -> 复制全部,粘贴到附加依赖项
系统环境变量设置(重启生效)
参考:【更改系统环境变量】Python编译器、CUDA、CMake等场景可设置使用
- 编辑
Path
环境变量,新建...\VTK\debug\bin\Debug
; - 新建一个
VTK_DIR
环境变量名,写入...\VTK\debug\include\vtk-9.2
; - 重启!