当前位置:   article > 正文

VTK常见问题整理_检查vtk库是否正常

检查vtk库是否正常

前言:

        初次配置VTK总会遇到许多问题,而这篇文章起到了很大作用,解决了博主遇到的所有问题,现将其转载,重新排版,并做补充。

目录

前言:

1. 初始化

2. 找不到vtkRenderingOpenGL.lib

3. 问题4~问题8综述

3.1 确定Windows系统库版本及位置

3.2 配置依赖库路径

4. 关于OpenGL的问题:无法解析的外部符号__imp_gl***

5. 无法解析的外部符号 gethostbyname

6. 无法解析的外部符号 GetProcessMemoryInfo

7. 无法解析的外部符号 __imp_SymGetLineFromAddr64

8. 无法解析的外部符号 __imp__MessageBoxA@16


1. 初始化

        要在代码中调用VTK,就必须在代码前进行初始化,否则就会报类似如下错误:

         解决:添加如下代码

  1. #include "vtkAutoInit.h"
  2. ​​​​​​​// 查看自己导的库是vtkRenderingOpenGL还是vtkRenderingOpenGL2;写入对应库
  3. VTK_MODULE_INIT(vtkRenderingOpenGL2);
  4. VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
  5. VTK_MODULE_INIT(vtkRenderingFreeType);
  6. 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"

转载于:
VTK 问题整理 - 一杯清酒邀明月 - 博客园 (cnblogs.com)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/901428
推荐阅读
相关标签
  

闽ICP备14008679号