2016-12-28 6 views
0

VTK을 C#과 함께 사용하여 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 로딩 오류가 발생했습니다. 수 지정된 모듈 : DLL 'Kitware.VTK.vtkFiltering.Unmanaged.dll'을로드 할 수 없습니다

형 'System.DllNotFoundException'처리되지 않은 예외 Kitware.VTK.dll에

추가 정보를 발생 찾을 수 없습니다. (HRESULT에서 예외 : 0x8007007e가)

나는 정확한 코드가 여기에 관련이 있다고 생각하지 않는다,하지만 난 다음 행에서 예외 가지고 :

vtkStructuredGrid structuredGrid = vtkStructuredGrid.New();

I Windows를 사용하고 있습니다를 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 오픈 소스 버전 \ bin

관리되는 .Net DLL은 관리되지 않는 VTK 라이브러리의 래퍼입니다. Mummy.dll이이 일을합니다.