前言:
初次配置VTK总会遇到许多问题,而这篇文章起到了很大作用,解决了博主遇到的所有问题,现将其转载,重新排版,并做补充。
目录
4. 关于OpenGL的问题:无法解析的外部符号__imp_gl***
6. 无法解析的外部符号 GetProcessMemoryInfo
7. 无法解析的外部符号 __imp_SymGetLineFromAddr64
8. 无法解析的外部符号 __imp__MessageBoxA@16
1. 初始化
要在代码中调用VTK,就必须在代码前进行初始化,否则就会报类似如下错误:
解决:添加如下代码
#include "vtkAutoInit.h"
// 查看自己导的库是vtkRenderingOpenGL还是vtkRenderingOpenGL2;写入对应库
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);
2. 找不到vtkRenderingOpenGL.lib
报错:
>VTK_hello.obj : error LNK2001: 无法解析的外部符号 "void __cdecl vtkRenderingOpenGL_AutoInit_Construct(void)"
(vtkRenderingOpenGL_AutoInit_Construct@@YAXXZ)
>D:\OUR_Projects\VS2019_Projects\C++Learning\VTK_hello1\x64\Release\VTK_hello1.exe : fatal error LNK1120: 1 个无法解析的外部命令
解决:利用Cmake查看你编译vtk时的gOpenGL是:vtkRenderingOpenGL,还是vtkRenderingOpenGL2,进行对应修改。
3. 问题4~问题8综述
接下来(问题4~问题8)都是由于Windows系统库未导入导致的。
3.1 确定Windows系统库版本及位置
确定编译器使用的Windows系统库版本,例VS2019
找到文件夹位置
这个路径每个都不一致,也可能是
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64
3.2 配置依赖库路径
一般VS是系统配置了Window SDK路径的,这一步就可以跳过了。否则,
右击项目>>属性>>链接器>>常规>>附加库目录,将你的Windows SDK路径导入
D:\Windows Kits\10\Lib\10.0.19041.0\um\x64
4. 关于OpenGL的问题:无法解析的外部符号__imp_gl***
报错:
解决:
通过(3)Windos SDK的配置,接下来直接导入依赖库 "OpenGL32.lib",Windows SDK版本不同,依赖库名字的大小写或有区别,需自行到文件夹下查看。
右击项目>>属性>>链接器>>输入>>附加依赖项 导入"OpenGL32.lib"
5. 无法解析的外部符号 gethostbyname
报错:
error LNK2019: 无法解析的外部符号 gethostbyname;
error LNK2019: 无法解析的外部符号 gethostname
error LNK2019: 无法解析的外部符号 WSAStartup
error LNK2019: 无法解析的外部符号 WSACleanup
解决:
通过(3)Windos SDK的配置,接下来直接导入依赖库 "WS2_32.lib",Windows SDK版本不同,依赖库名字的大小写或有区别,需自行到文件夹下查看。
右击项目>>属性>>链接器>>输入>>附加依赖项 导入"WS2_32.lib"
6. 无法解析的外部符号 GetProcessMemoryInfo
报错:
解决:
通过(3)Windos SDK的配置,接下来直接导入依赖库 "Psapi.lib",Windows SDK版本不同,依赖库名字的大小写或有区别,需自行到文件夹下查看。
右击项目>>属性>>链接器>>输入>>附加依赖项 导入"Psapi.lib"
7. 无法解析的外部符号 __imp_SymGetLineFromAddr64
报错:
vtksys-9.0d.lib(SystemInformation.obj) : error LNK2019: 无法解析的外部符号 __imp_SymGetLineFromAddr64
vtksys-9.0d.lib(SystemInformation.obj) : error LNK2019: 无法解析的外部符号 __imp_SymInitialize,
vtksys-9.0d.lib(SystemInformation.obj) : error LNK2019: 无法解析的外部符号 __imp_SymFromAddr
解决:
通过(3)Windos SDK的配置,接下来直接导入依赖库 "DbgHelp.lib",Windows SDK版本不同,依赖库名字的大小写或有区别,需自行到文件夹下查看。
右击项目>>属性>>链接器>>输入>>附加依赖项 导入"DbgHelp.lib"
8. 无法解析的外部符号 __imp__MessageBoxA@16
报错:
error LNK2001: 无法解析的外部符号 __imp__MessageBoxA@16
解决:
通过(3)Windos SDK的配置,接下来直接导入依赖库 "User32.lib",Windows SDK版本不同,依赖库名字的大小写或有区别,需自行到文件夹下查看。
右击项目>>属性>>链接器>>输入>>附加依赖项 导入"User32.lib"