分类: C/C++
2009-03-02 09:49:03
本文在CadCaeCam论坛的精华贴""的基础上完成,并补充了在其之外遇到的各种问题。
本文以VC6为例,要用VS.NET 2005的请参见:在 (已测试通过)
1. 必须要下载的东西,VC6已经装好为前提:
vtk-5.0.4-win32.exe 安装程序 的Download
vtk-5.0.4.zip 源程序
vtkdata-5.0.4.zip 数据
vtkDocHtml VTK手册(可选)
cmake-2.4.7-win32-x86.exe
2. 先执行 vtk-5.0.3-win32.exe安装到C:\VTK 5.0, 安装后会产生 vtk5.0 文件夹里面还包括 bin 等子文件夹。
(为了方便请统一用这个目录,我在后文中提供了一个教程,其project setting也是按这个目录配置的)
3. 将 vtk-5.0.4.zip 解压到c:\VTK 5.0\VTK, 将vtkdata-5.0.4.zip也解压到c:\VTK 5.0\vtkdata
(其实既然要用源文件编译,windows install的安装并不是必须的,但这是按"VTK安装三步曲"的顺序来的,很多人都统一这样用的,避免不必要的麻烦,也就不改了)
4. 安装 cmake-2.4.7-win32-x86.exe,方便起见装到c:\cmake。运行cmake,设置sourse code目录为c:\vtk5.0\VTK\, build目录为c:\vtk5.0\bin\
按 configure 按钮,cmake 软件会让你选择需要使用的编译器,这里我们选vc6.0,然后cmake会描所需要的文件,停下来之后,我们就可以修改 cmake选项了。
打开Show Advanced Values再configure,才可以看到一个vtk_use_guisupport,打开它,才能选vtk_use_mfc,再configure,configure的次数是无所谓的。
很多人把 vtk 安装好了,却无法运行vtk 中与mfc 混合编程的例子,提示错误都是缺少vtkmfc.lib,问题就出在这个选项,我们必须把它设置为 on。
至于vtk_use_qvtk,这是给QT用的vtk,但目前只支持QT3,现在的版本是QT4,我试过了,cmake通不过。只能等着新版cmake了。
还有要注意的就是:
vtk_data_root: 目的是告诉cmake,vtk 需要的数据都在哪里,我们的数据在c:\vtk\vtkdata\
cmake_install_prefix: 这个是指定一个目录把.h .lib .dll等精华放在这里,"VTK安装三步曲"里说是为将来装vtk做准备,我不太清楚,反正用它默认的就好了。
build_examples: 就是询问是否编译 vtk 中的例子,你在看这个教程,说明肯定是初次用VTK,建议选上。
build_shared_libs: 如果设置为off,就只会生成lib 文件,用于开发肯定是够了。如果设置为on,将会多生成 dll 文件,这些dll需要拷到windows/system目录下。如果用静态库编程,即off时,应用程序可以独立运行,尺寸也比较大,如果用动态库编程,即on时,应用程序必须找到动态库才能运行,但尺寸可以做得比较小。建议选On, 我试过选OFF,所谓的静态编译,但之后新建一个项目时,还是会出现找不到文件的问题。
vtk_use_parallel: 对于想用vtk 做并行计算的朋友,要把这个选上,对于只想学学vtk 的,保持默认 off
都没问题了所有项目会变成灰色。这时就可以按OK了,几秒钟后,cmake自动退出,为VC6准备的make文件已经生成好。
5. 用 vc6.0打开 bin目录下的 vtk.dsw 文件,直接build。这一般要花掉十几分钟。结果保存在c:\vtk5.0\bin\bin 。
如果这个过程报错,可能是防火墙、杀毒软件的原因,请关掉再试。还有就是,我曾经试图在机器上先给VS2005再给VC6装VTK,结果VC6编译时就死在example那里了。最后只能删掉所有vtk目录从第一步再来一遍,only for VC6才通过的。
顺利通过编译就可以继续了。
6. 第4步时build_shared_libs是ON的话,把C:\VTK 5.0\bin\bin\Debug里生成的dll文件都拷到windows/system目录下。
7. 试一下。打开C:\VTK 5.0\bin\Examples\All\VTKExamples.dsw,选择Cone项目,右键set as active project(VC不熟的人一定要记得这个!),然后,build,run. 这时应该能正确运行了。
8. 但还没完。这时能运行的只是vtk自己带的项目,自建的项目还需要自己进行一些设定:
新建一记事本,一定要取消自动换行。把下面的"三大步"copy进去,确保每一步都在一行,以后会经常用到的:
一、修改Project setting->C/C++ ->Category->Preprocessor->Additional include directories: 二、修改Project setting->Link->Input->Object/library modules: 三、还有Additional library path: |
像Cannot open include file: 'vtkConeSource.h':这样的错误都是上面三大步没走对或dll没拷到windows/system下造成的。要建立新项目,必须重新配置三大步,因为那三步都是Project setting里的,新项目没有默认这些设置。
如果某个项目再提示缺什么lib或.h的话,再临时加上去就行了。
9. 这时新建一个project, win32 console application, an empty project, 生成后给source files加一个test.cpp,把下面的代码放进去:
看过vtk example的第一个例子就会知道上面的程序在做些什么。
如果你一定要生成a simple project的话,这时需要做的是:删掉StdAfx.cpp和StdAfx.h及其在main()之上的include,还有在Project setting->C/C++ ->Category->Precompiled Headers里选Not using precompiled headers.
10. CSDN原来有一个"VTK4.2学习例程",有20个含注解的程序,我看过之后添加了些注释并重新上传了,初学vtk的朋友建议。
大功告成。。