① CMake编译VTK,ITK总是出错
我编译过ITK与VTK刚开始也不行,后来成功了。总结成功原因:1.操作系统要干净2.最好正版的VC(我从微软下的90天试用版VS2008)3.你的这个错误明显是路径不对
② VS2010,VTK,QT混合编程,在编译VTK.sln时出现如下错误,实在不知道为什么,请大家给看看,谢谢!
链接器添加vtkcommon.lib注意相对路径‥\‥\‥\bin\debug\vtkCommon.lib
③ Cmake动态编译VTK库(QVtkwidget)
在版本问题上大费周章之后,得到如下的成功尝试
软件版本说明:
PCl1.8.1 + VS2017 + Qt5.9.6 + Cmake + Vtk8.0.0
点击Configure后对条目进行处理:(修改完成继续Configure直到没有错误)
1.点击Add Entry添加
Name: CMAKE_DEBUG_POSTFIX 、Type: STRING 、Value:-gd、Description:空
让vtk的lib最后分为debug版本跟release版本。Debug版本带-gd。Release版本不带-gd,方便区分.
2.勾选BUILD_SHARED_LIBS,这样最后生成的vtk才会有dll跟lib
3.CMAKE_INSTALL_PREFIX设置为你清空的VTK文件夹(为了方便,这里选择的路径为PCL集成的VTK路径)
4.勾选VTK_Group_Qt,这样以后方便在qt里面使用
5.修改Qt5_DIR路径为PATH=D:/Qt/Qt5.12.0/5.12.0/msvc2017_64/lib/cmake/Qt5
6.修改VTK_QT_VERSION:STRING=5,使用Qt5修改相应版本号
7.如出现qmake路径则修改QT_QMAKE_EXECUTABLE:FILEPATH=D:/Qt/Qt5.12.0/5.12.0/msvc2017_64/bin/qmake.exe
完成Configure,不出意外就不再显示红色,接着点Generate
接着以管理员身份运行VS2017,打开构建目录下的VTK.sln
选择Debug,x64,然后右键解决方案窗口的ALL_BUILD --> 生成。
漫长等待...ing
然后右键install --> 仅生成install
Release版本同理,先ALL_BUILD --> 生成 再 右键install --> 仅生成install
至此完成编译VTK操作,接下来提取所需的QVtkwidget插件
④ 编译vtk例子失败,求教
编译vtk例子失败,求教
UpdateWindow只向窗体发送WM_PAINT消息,在发送之前判断GetUpdateRect(hWnd,NULL,TRUE)看有无可绘制的客户区域,如果没有,则不发送WM_PAINT
如果希望立即刷新无效区域,可以在调用InvalidateRect之后调用UpdateWindow,如果客户区的任一部分无效,则UpdateWindow将导致Windows用WM_PAINT消息调用窗口过程(如果整个客户区有效,则不调用窗口过程)。这一WM_PAINT消息不进入消息队列,直接由WINDOWS调用窗口过程。窗口过程完成刷新以后立刻退出,WINDOWS将控制返回给程序中UpdateWindow调用之后的语句。(windows程序设计第5版 P98)
⑤ vs2013编译过程中出现错误
1>source.obj : error LNK2001: 无法解析的外部符号 _png_get_rows
1>source.obj : error LNK2001: 无法解析的外部符号 _png_read_png
1>source.obj : error LNK2001: 无法解析的外部符号 _png_set_rows
1>source.obj : error LNK2001: 无法解析的外部符号 _png_destroy_write_struct
1>source.obj : error LNK2001: 无法解析的外部符号 _png_sig_cmp
1>source.obj : error LNK2001: 无法解析的外部符号 _png_set_palette_to_rgb
1>source.obj : error LNK2001: 无法解析的外部符号 _png_create_read_struct
1>source.obj : error LNK2001: 无法解析的外部符号 _png_create_info_struct
1>source.obj : error LNK2001: 无法解析的外部符号 _png_set_sig_bytes
1>source.obj : error LNK2001: 无法解析的外部符号 _png_set_longjmp_fn
1>source.obj : error LNK2001: 无法解析的外部符号 _png_write_png
1>source.obj : error LNK2001: 无法解析的外部符号 _png_get_image_width
1>source.obj : error LNK2001: 无法解析的外部符号 _png_create_write_struct
1>source.obj : error LNK2001: 无法解析的外部符号 _png_get_bit_depth
1>source.obj : error LNK2001: 无法解析的外部符号 _png_get_image_height
1>source.obj : error LNK2001: 无法解析的外部符号 _png_init_io
1>source.obj : error LNK2001: 无法解析的外部符号 _png_set_IHDR
1>source.obj : error LNK2001: 无法解析的外部符号 _png_destroy_read_struct
1>source.obj : error LNK2001: 无法解析的外部符号 _png_get_color_type
⑥ 在visual studio上运行vtk要那些模块有大神指点下吗
一、确定在64位操作系统上运行还是在WOW64下运行。
在Visual
Studio平台中最后对64位应用程序编译时,需要指定这个应用程序是在64位操作系统上作为本机应用程序运行还是在WOW64环境下运行。这个
WOW64环境是一个由操作系统提供的兼容性环境。这个环境主要是让32位应用程序也能够在64位的操作系统上运行。换句话说,在编译时要确定产生的应用
程序是真正的64位应用程序(只能够在64位操作系统上运行),还是伪64位应用程序(其实是32位应用程序,只是可以借助WOW64在64位操作系统上
运行)。
在确定这个内容的时候,有一个内容笔者要特别提醒
大家。通常情况下在64位操作系统上,所有使用NET Framework
1.1以前版本生成的应用程序都将被视作为32位应用程序,并且始终在32位公共语言运行上的WOW64环境下运行;而在2.0版本以后生成的32位特定
应用程序可以在64位平台上的WOM64环境下运行。这两个版本之间的细微差异,各位读者可以开发一个小程序测试一下即可。其中的内涵是只可意会、不可言
传呀。
二、正确部署Visual Studio开发环境。
在开发64位应用程序之前,需要明白一点。到目前
为止,Visual Studio
2008仍然是一个32位的应用程序。在安装部署时,如果是在X86的计算机上(32位操作系统),则其将安装32位的CLR版本。而如果在64位操作系
统上安装部署时,安装进程将同时安装32位的CLR版本和合适的64位CLR。注意当将其部署到64位操作系统的时候,它将在WOW64环境下运行。
此时笔者认为需要注意一个细节问题。当在
Wom64环境下运行32位应用程序时,应用程序只限于在一个处理器上执行。也就是说应用程序不能够享受64位操作系统所带来的性能上的提升。而单处理器
执行会降低32位应用程序在基于Itanium系统上运行时的性能和可伸缩性。为此如果对于性能要求比较高的应用程序或者有负载比较高的服务器,尽量不要
采用兼容的方式。即32位应用程序在32位操作系统上运行,而不要在Wom64环境下运行。否则的话,不但不能够享受64位操作系统带来的好处,反而会降
低应用程序原有的性能,得不偿失。
三、32位应用程序在64位CLR上运行可能导致意外的结果。
虽然64位操作系统提供另一个WOW64环境,使得32位应用程序能够在64位操作系统上运行。也就是说,在大部分情况下32位应用程序可以在32位或者64位操作系统上同等的运行,其最终的结果都是相同的。但是有时候也会有意外。这些意外主要是以下原因所造成的。
如在应用程序的结构中包含一些大小随平台而改变的成员。如指针类型的对象,其会操作操作系统位数的不同而改变。再如指针算法中如果包含固定大小,或者不正确的平台调用与COM声明等等,都会导致32位应用程序在64位CLR上运行出现一些意外的结果。
为此笔者特别提醒,如果开发人员设计一些兼容的应用程序时(即可以同时在32位与64位应用程序上运行),必须要注意这些因素对应用程序运行过程的影响。在开发中,要尽量避免使用这些对象,以免不必要的麻烦。
四、如何判断某个应用程序是否适合在64位操作程序上运行。
在应用程序开发时,开发人员可能会借鉴已有的应用
程序。此时他们就需要判断手中的应用程序能否在WOW64环境下运行。或者说,只有在特定的平台下,如32位操作系统或者64位操作系统下(而不是
WOM64)下运行。要实现这个目的的话,开发环境提供了一个Corflags的命令。简单的说,在命令行中使用corflags.exe可以确定某个
exe或者dll是仅仅在特定平台上运行,还是只可以在WOW64环境下运行。另外在必要的情况下,程序开发人员还可以利用这个命令来更改应用程序的平台
状态。
五、调试64位应用程序与32位应用程序之间的差异。
在开发平台中自带有应用程序的调试工具。应用程序
调试一般包括本地调试与远程调试。对于一些中大型的应用程序而言,远程调试是必须的。这里需要注意,在任何情况下,如果在64位计算机上安装远程调试都会
同时安装32位和64位版本的远程调试监视器。不过在调试64位应用程序的时候,则必须要选择正确的版本。如需要选择“远程调试器X64)。否则的话,调
试结果会有偏差。
下面介绍一下在64位平台上VS中会出现的编译错误
模块计算机类型“x64”与目标计算机类型“X86”冲突
一种可以解决的方法是:
1、修改目标计算机类型:项目->熟悉->连接器(Linker)->高级->目标计算机。然后把目标计算机类型改成X64。如下图所示:
2、配置管理器:解决方案平台(默认是Win32的)->选择配置管理器->活动解决方案平台下选择x64。如下图所示:
清楚一下项目 重新编译一下 OK!
项目生成64位的应用程序
一张自动更新BIOS的软盘,重新刷新BIOS,
⑦ 编译vtk出现的问题
说得详细一些,编译到什么情况出现的错误,bin已经编译出其他exe和dll文件了么?
⑧ vtk在java2中的使用
VTK(Visualization ToolKit)是一个开放源码 自由获取的软件系统 全世界的数以千计的研究人员和开发人员用它来进行 D计算机图形 图像处理 可视化 VTK包含一个c++类库 众多的翻译接口层 包括Tcl/Tk Java Python Visualization Toolkit 是一个用于可视化应用程序构造与运行的支撑环境 它是在三维函数库OpenGL 的基础上采用面向对象的设计方法发展起来的 它将我们在可视化开发过程中会经常遇到的细节屏蔽起来 并将一些常用的算法封装起来 比如Visualization Toolkit 将我们在表面重建中比较常见的Marching Cubes 算法封装起来 以类的形式给我们以支持 这样我们在对三维规则点阵数据进行表面重建时就不必再重复编写MarchingCubes 算法的代码 而直接使用Visualization Toolkit 中已经提供的vtkMarchingCubes 类Visualization Toolkit 是给从事可视化应用程序开发工作的研究人员提供直接的技术支持的一个强大的可视化开发工具 它以用户使用的方便性和灵活性为主要原则 具有如下的特点 ) 具有强大的三维图形功能 Visualization Toolkit 既支持基于体素Voxel basedrendering 的体绘制Volume Rendering又保留了传统的面绘制 从而在极大的改善可视化效果的同时又可以充分利用现有的图形库和图形硬件 ) Visualization Toolkit 的体系结构使其具有非常好的流streaming 和高速缓存caching 的能力 在处理大量的数据时不必考虑内存资源的限制 ) Visualization Toolkit 能够更好的支持基于网络的工具比如Java 和VRML 随着Web 和Internet 技术的发展Visualization Toolkit 有着很好的发展前景 ) 能够支持多种着色如OpenGL 等 ) Visualization Toolkit 具有设备无关性使其代码具有良好的可移植性 ) Visualization Toolkit 中定义了许多宏 这些宏极大的简化了编程工作并且加强了一致的对象行为 ) Visualization Toolkit 具有更丰富的数据类型 支持对多种数据类型进行处理 ) 既可以工作于Windows 操作系统又可以工作于Unix 操作系统极大的方便了用户下面介绍一下VTK在JDK _ 下的使用方法 ) 从vtk的网站()上下载最新的软件包 版本是 然后把它安装到C:vtk 目录下 ) 从Sun官方下载链接 版本 _ 然后安装到C:j sdk _ 上 ) 设置环境变量 系统 >高级 >环境变量 >path 设置为C:j sdk _ in;C:ProgramFilesJavaj re _ in;C:j sdk _ jrein;C:vtk in ) 拷贝C:vtk in*java dll到系统目录 ) 编译 运行 为了方便起见 拷贝C:vtk ExamplesTutorialStep Java目录下的Cone java到d盘 当前目录为d盘D:>javac classpath c:vtk invtk jar Cone javaD:>java classpath ;c:vtk invtk jar Cone源码如下 //// This example creates a polygonal model of a cone and then renders it to// the screen It will rotate the cone degrees and then exit The basic// setup of source > mapper > actor > renderer > renderwindow is // typical of most VTK programs //// We import the vtk wrapped classes first import vtk *;// Then we define our class public class Cone {// In the static contructor we load in the native code // The libraries must be in your path to work static { System loadLibrary( vtkCommonJava ); System loadLibrary( vtkFilteringJava ); System loadLibrary( vtkIOJava ); System loadLibrary( vtkImagingJava ); System loadLibrary( vtkGraphicsJava ); System loadLibrary( vtkRenderingJava ); }// now the main programpublic static void main (String []args) {// // Next we create an instance of vtkConeSource and set some of its// properties The instance of vtkConeSource cone is part of a// visualization pipeline (it is a source process object); it proces data// (output type is vtkPolyData) which other filters may process //vtkConeSource cone = new vtkConeSource();cone SetHeight( );cone SetRadius( );cone SetResolution( ); // // In this example we terminate the pipeline with a mapper process object // (Intermediate filters such as vtkShrinkPolyData could be inserted in// beeen the source and the mapper )We create an instance of// vtkPolyDataMapper to map the polygonal data into graphics primitives We// connect the output of the cone souece to the input of this mapper //vtkPolyDataMapper coneMapper = new vtkPolyDataMapper();coneMapper SetInput( cone GetOutput() );// // Create an actor to represent the cone The actor orchestrates rendering// of the mapper s graphics primitives An actor also refers to properties// via a vtkProperty instance and includes an internal transformation// matrix We set this actor s mapper to be coneMapper which we created// above //vtkActor coneActor = new vtkActor();coneActor SetMapper( coneMapper );//// Create the Renderer and assign actors to it A renderer is like a// viewport It is part or all of a window on the screen and it is// responsible for drawing the actors it has We also set the background// color here//vtkRenderer ren = new vtkRenderer();ren AddActor( coneActor );ren SetBackground( );//// Finally we create the render window which will show up on the screen// We put our renderer into the render window using AddRenderer We also// set the size to be pixels by //vtkRenderWindow renWin = new vtkRenderWindow();renWin AddRenderer( ren );renWin SetSize( );//// now we loop over degreeees and render the cone each time//int i;for (i = ; i < ; ++i){// render the imagerenWin Render();// rotate the active camera by one degreeren GetActiveCamera() Azimuth( );}} } lishixin/Article/program/Java/JSP/201311/19769