2016-12-28 40 views
0

我正在嘗試在C#中使用VTK來讀取和寫入VTK/VTS文件。我創建了一個基本應用程序,並安裝了名爲ActiViz.NET.x64(v5.8.0)的64位VTK .NET包裝程序包。ActiViz.NET.x64(v5.8.0):無法加載DLL'Kitware.VTK.vtkFiltering.Unmanaged.dll'

安裝的軟件包沒有任何問題,我可以訪問Kitware.VTK命名空間,但只要嘗試創建VTK對象,就會收到非託管DLL加載錯誤。

類型「System.DllNotFoundException」的未處理的異常發生在Kitware.VTK.dll

其他信息:無法加載DLL「Kitware.VTK.vtkFiltering.Unmanaged.dll」:可以在指定的模塊不被發現。 (異常來自HRESULT:0x8007007E)

我不認爲確切的代碼是與此有關,但我得到了在以下行除外:我使用Windows

vtkStructuredGrid structuredGrid = vtkStructuredGrid.New();

10 x64,Visual Studio 2015,目標.NET Framework是4.6.2,並且我安裝了ParaView 4.1和5.2。問題中的DLL位於應用程序的bin目錄中,但我也嘗試將其複製到Windows/System32目錄,結果相同。

有沒有一種方法可以找出究竟是什麼問題與DLL加載?

回答

-1

因此,首先我想知道我的進程在哪裏查找丟失的DLL。我用Sysinternals Suite及其Process Monitor

enter image description here

我在我在我的自託管應用程序中使用我的.NET庫引用VTK。自託管應用程序是啓動項目,因此運行時查找應用程序目錄中缺少的DLL,而不是庫的實際位置。

將缺少的Kitware.VTK.vtkFiltering.Unmanaged.dll複製到該目錄後,進程監視器確認該DLL已成功讀取,但仍遇到與以前相同的異常。

我比較了庫和應用的bin目錄,我發現只有Kitware.mummy.Runtime.dll和Kitware.VTK.dll被自動複製到那裏。 我將所有其他VTK DLL複製到應用程序的bin,然後它終於工作。

這個異常的錯誤信息並不在第一位,但我認爲它更可能是ActiViz.NET軟件包的一個問題。

0

您應該從Activiz安裝bin目錄複製所有dll,即使您不需要在您的代碼中使用。 C:\ Program Files(x86)\ ActiViz.NET 5.8.0 OpenSource Edition \ bin

託管.Net DLL是非託管VTK庫的包裝。 Mummy.dll是爲了這份工作。