admin管理员组

文章数量:1558975

1. 0x00000000000000处有未经处理的异样

程序运行时出现下面问题肯定是内存错误,但到底是数组越界(数组边界溢出)指针错误链接库问题......就需要进一步调试(debug)。

 

链接:赛码在线开始系统:http://oj.acmcoder/QA/

在线编程题总是报运行错误,是什么情况?

运行错误一般都是数组越界非法访问野指针乱访问空指针乱访问等情况造成代码奔溃

 

2. error LNK2019

LINK :error LNK2019:无法解析的外部符号 "__declspec(dllimport)...《进阶》p11

这类问题与库在具体环境下的配置不完善所造成的库的加载错误有关,解决方法如下:

方法1自动配置CMakeLists.txt脚本文件、CMake配置及生成新的工程)

网上有很多资料讲到MFC环境下开发VTK程序时,需要手动在Visual Studio中设置VTK的包含路径和liib库路径。这种方法对于一般用户来说比较复杂,每次新建工程时,都要查找和设置这些库,既费时费力,又不利于程序的移植(例如换到另外一台计算机,如果VTK编译路径不一致,就找不到库)。因此推荐读者使用CMake来管理工程(如下),因为仅仅几行脚本代码就可以实现VTK库在具体环境下的配置,而且便于程序移植

//设置方法bin(dll)——>include(h)——>lib(lib)

Step1①设置编译好的动态库目录(.dllbin文件夹路径到系统path环境变量中。(似乎不用,见问题3

Step2修改CMakeLists.txt文件MODULE_INCLUDE_DIRECTORIES.h)包含目录MODULE_TARGET_LIBRARIES.lib)库目录两个变量的值

Step3然后重新配置(configure)、生成(generate)新的工程

参见:http://blog.163/qimo601@126/blog/static/1582209320169711559384/

方法2手动配置path环境变量—VTK的动态库目录路径(bin)、VTK的包含目录路径(include)、VTKlib库目录路径(lib)—VTK的具体所需的库文件)

注意:

.a 文件肯定是静态链接库对吧?

我记得 .lib文件不一定是静态链接库文件,还有可能是dll的地址文件

//设置方法(版本1bin(dll)——>include(h)——>lib(lib)

Step1设置编译好的①动态库目录(.dllbin文件夹路径到系统path环境变量中。

直接在工程中修改项目属性,步骤如下:

Step2VC++目录——>常规——>②包含目录(.hVTKinclude文件夹路径

Step3VC++目录——>常规——>③库目录(.libVTKlib文件夹路径

Step4链接器——>输入——>④附加依赖项(.lib具体的所有的依赖的(需要链接的)VTK库文件lib

//设置方法(版本2bin(dll)——>include(h)——>lib(lib)

Step1设置编译好的①动态库目录(.dllbin文件夹路径到系统path环境变量中。

直接在工程中修改项目属性,步骤如下:

Step2C/C++——>常规——>②附加包含目录(.hVTKinclude文件夹路径

Step3链接器——>常规——>③附加库目录(.libVTKlib文件夹路径

Step4链接器——>输入——>④附加依赖项(.lib具体的所有的依赖的(需要链接的)VTK库文件lib

也有可能是下面两种方式选择不对造成的:

#include <vtkAutoInit.h>   

VTK_MODULE_INIT(vtkRenderingOpenGL2);

VTK_MODULE_INIT(vtkInteractionStyle);

VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);

#include <vtkAutoInit.h>   

VTK_MODULE_INIT(vtkRenderingOpenGL);

VTK_MODULE_INIT(vtkInteractionStyle);

VTK_MODULE_INIT(vtkRenderingVolumeOpenGL);

 

3. 计算机中丢失xxx.dll

这是运行时错误,是动态库加载问题,是因为无法链接到动态库造成的(计算机中丢失XXX.dll),如果工程项目的属性设置确保正确,采用如下4种方式解决:

解决方式

序号

具体操作

缺点

全部复制

将提示无法找到的dll文件全部复制到工程的Debug或者Release目录下(复制时要注意编译的VTK(需要复制的)是Debug版本还是Release版本,如果复制版本不对,可能会出现其他不可预知的错误!)

该方法要求每新建一个工程,程序运行之间都需要复制所提示的dll文件,明显比较烦琐。

将提示无法找到的dll

本文标签: 软件QTVTK