编译VTK的MFC库
原文鏈接:http://blog.csdn.net/left_la/article/details/7069708
本人做了少量修改!
 
Win7 + VS2010 + CMake2.8.6 + VTK5.8
1、準備:
 ? ? 1)下載安裝Vs2010
 ? ? 2)下載安裝CMake2.8.6 (www.cmake.com)
 ? ? 3)下載VTK相關包:(www.vtk.org)
 ? ? ? ? 1.vtk-5.8.0-win32-x86.exe ?(win32安裝程序)(還是安裝的好!)
 ? ? ? ? 2.vtk-5.8.0.zip ?(源碼包)
 ? ? ? ? 3.vtkdata-5.8.0.zip ?(數據包)
 ? ? ? ? 4.vtkDocHtml-5.8.0.tar.gz ?(文檔包,可下可不下)
 
 2、為vtk的安裝新建個根文件夾,命名為"VTK5.8",在這個文件夾下新建四個文件夾,分別命名為 VTKSrc、VTKData、VTKDoc、Bin,將之前下載的源碼包數據包文檔包分別解壓到前三個文件夾中。
 
 3、安裝vtk-5.8.0-win32-x86.exe,安裝到根文件夾 VTK5.8 下。
 
 4、打開CMake(CMake2.8\bin\cmake-gui.exe),
 ? ?設置:Source code目錄:F:\Dev\SDK\VTK5.8\VTKSrc?
 ? ? ? ? Build目錄:F:\Dev\SDK\VTK5.8\Bin ?(目錄地址請根據自己電腦目錄做更改)
 ? ?然后configure,在彈出框中選擇VS2010作為我們的編譯器,然后Cmake自動描述需要的文件。
 ? ?停下后,顯示紅色列表,接著開始修改cmake選項,手動勾上?
 ? ?build_shared_libs、build_examples,然后勾選cmake界面上方的Advanced,進入下一級,這時到下面重新找到vtk_use_guisupport 這一項勾選,再 configure,之后會出現 vtk_use_mfc,選擇它勾選,再一直configure,直到紅色消失。
 ? ?最后Generate,產生相應的KTV.sln 解決方案。
 ? ?
 ? ?(
 ? ? ? 相關說明:
 ? ? ? 1、為什么要勾選vtk_use_mfc? 很多人把 vtk 安裝好了,卻無法運行vtk 中與mfc
 ? ? ? ?混合編程的例子,提示錯誤都是缺少vtkmfc.lib,問題就出在這個選項,我們必須
 ? ? ? ?把它設置為 on。
 ? ? ? 2、vtk_use_qvtk,這是給QT用的vtk
 ? ? ? 3、vtk_data_root: 目的是告訴cmake,vtk 需要的數據都在哪里,我們的數據在
 ? ? ? F:\Dev\SDK\VTK5.8\VTKData
 ? ? ? 4、cmake_install_prefix: 這個是指定一個目錄把.h .lib .dll等精華放在這里,
 ? ? ? "VTK安裝三步曲"里說是為將來裝vtk做準備。
 ? ? ? 5、build_examples: 就是詢問是否編譯 vtk 中的例子,初次用VTK,選上便于
 ? ? ? 學習。
 ? ? ? 6、build_shared_libs: 如果設置為off,就只會生成lib文件,用于開發肯定是
 ? ? ? 夠了。如果設置為on,將會多生成 dll 文件,這些dll需要拷到windows/system
 ? ? ? 目錄下。如果用靜態庫編程,即off時,應用程序可以獨立運行,尺寸也比較大,
 ? ? ? 如果用動態庫編程,即on時,應用程序必須找到動態庫才能運行,但尺寸可以做
 ? ? ? 得比較小。建議選On, 我試過選OFF,所謂的靜態編譯,但之后新建一個項目時,
 ? ? ? 還是會出現找不到文件的問題。
 ? ? ? 7.vtk_use_parallel: 對于想用vtk 做并行計算的朋友,要把這個選上,
 ? ? ? 對于只想學學vtk 的,保持默認 off ?
 ? ? ?)
 
 5、打開 KTV.sln ,如果使用vs2010,在編譯整個解決方案之前,需要注意:
 ? 1)請先找到VTKSrc\GUISupport\MFC\vtkMFCWindow.cpp ,找到類似以下源碼并修改數值如下:
 
? 2)如果之前Cmake勾選了 build_examples,工程中含有VKT的examples,僅改上面代碼還不夠,還需要找到
 ? VTKSrc\Examples\GUI\Win32\vtkMFC\vtkDLG\stdafx.h
 ? VTKSrc\Examples\GUI\Win32\vtkMFC\vtkMDI\stdafx.h
 ? VTKSrc\Examples\GUI\Win32\vtkMFC\vtkSDI\stdafx.h
 ? VTKSrc\Examples\GUI\Win32\SampleMFC\stdafx.h
 ? 四個文件,每個文件下找到類似以下源碼并修改數值如下:
? fatal error C1189: #error : ?This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended.
??
6、編譯整個解決方案。
? 如果之前Cmake勾選了 build_examples,工程中含有VKT的examples,在編譯過程中,以下四個項目vtkDLG、vtkMDI、vtkSDI、Win32SampleMFC,可能還會出現類似下面的LINK鏈接錯誤:
error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: static class...
稱找不到vtkIO.dll
對應解決辦法:在每個項目屬性的鏈接器->輸入->附加依賴項中添加入vtkIO.lib庫,目錄為:..\..\..\..\bin\Debug\vtkIO.lib
就此,基本的VKT安裝及源碼編譯結束,編譯產生的lib、dll鏈接庫和執行文件都生成在VTK5.8\Bin\bin\Debug文件夾下。
 
 
總結:主要是使用到了MFC支持,從中取出MFC LIB文件,取消QT的所有選擇項,一次性成功:
 
 
 
然后,打開目標文件夾的方案文件,release 和debug都全部生成一遍,大功告成!
 
 
總結
以上是生活随笔為你收集整理的编译VTK的MFC库的全部內容,希望文章能夠幫你解決所遇到的問題。