① 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