2012-05-31 3 views
2

저는 ITK를 C++과 함께 사용했습니다. 이제는 C#에서 간단한 itk를 사용하려고합니다. 저는 MICCAI 2011 튜토리얼을보고 시작하려고합니다. Windows 7 64 비트 시스템과 Visual Studio Ultimate 2010을 사용하고 있습니다. this wiki에 따르면 압축을 풀고 .dll 파일을 내 프로젝트에 참조 할 수 있어야하며 정상적으로 작동해야합니다. SimpleITKCSharpManaged.dll을 내 참조에 추가 할 수 있습니다. 그러나 SimpleITKCSharpNative.dll을 내 참조에 추가 할 수는 없습니다. 그것은 나에게 오류를 제공합니다 : 파일이 액세스 가능한지, 그것이 유효한 어셈블리 또는 COM 구성 요소인지 확인하십시오.C# 용 Simple-ITK 설치 자습서

그때 간단한 콘솔 응용 프로그램

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Text; 
using itk.simple; 

namespace TestSimpleItk 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string inputFilename = "001.png"; 
      if (File.Exists(inputFilename)) 
      { 
       try 
       { 
        var input = SimpleITK.ReadImage(inputFilename); 
        var binary = SimpleITK.BinaryThreshold(input, 100, 255, 255, 0); 
        SimpleITK.WriteImage(binary, "cthead1-binary.png"); 
       } 
       catch (Exception ex) 
       { 
        Console.WriteLine("{0}", ex); 
       } 

      } 
      else 
      { 
       Console.WriteLine("File '{0}' does not exist", inputFilename); 
      } 
     } 
    } 
} 
을 실행하려고은

던져 예외입니다 : 은 { " 'itk.simple.SimpleITKPINVOKE'의 형식 이니셜 라이저에서 예외를 Throw했습니다."} 및 내부 예외 ("HRESULT : 0x8007000B의 예외")

SimpleITKCSharpNative.dll을 bin/debug 디렉토리에 복사하려고 시도했는데, 여전히 동일한 오류가 발생합니다.

이 문제를 해결하는 방법이나 CMAKE를 사용하여 소스 코드에서 로컬로 실제로 빌드하지 않고 SimpleItk을 시작하고 실행하는 방법에 대한 아이디어가 있습니까?

감사합니다.

답변

0

ITK의 Dan Mueller가 내 질문에 답변했습니다.

안녕 페데리코을

받고있는 오류가 힌트를 제공합니다 : 여기에 그가 무슨 말을했다입니다. "시도가 잘못된 형식의 프로그램을로드하려고했습니다" 을

이 오류는 .NET 프로그램이 다른 아키텍처를 사용하여 빌드 된 dll의 함수에 액세스하려고 할 때 발생합니다. 여기에 예를 에 대한 참조 : http://blogs.msdn.com/b/arvindsh/archive/2009/06/21/tip-of-the-day-an-attempt-was-made-to-load-a-program-with-an-incorrect-format-net-p-invoke-issue.aspx

이 문제를 해결하는 가장 쉬운 방법은 SimpleITK 같은 건물에 설정을 을 사용하는 것입니다. 예를 들어 "SimpleITK-0.4.0-CSharp-Win64-anycpu.zip"을 다운로드 한 경우 호출 프로그램 을 x64 AnyCPU 설정으로 빌드해야합니다. "SimpleITK-0.4.0-CSharp-Win32-x86.zip"을 다운로드 한 경우 x86 Win32 설정을 사용해야합니다. 당신은 단지 프로그램 참조에 "SimpleITKCSharpManaged.dll"를 추가해야하지만 는 "SimpleITKCSharpNative.dll"프로브 경로 (이 달성의 넣어하는 가장 쉬운 방법에 있어야합니다 :

은 다른 질문에 대답하려면 귀하의 프로그램 실행 파일과 관리되는 dll 옆의 바이너리 디렉토리에 있습니다. 이것은 (이 페이지는 리눅스,하지만 같은 접근 방식은 또한 윈도우에 필요한 임) 다음 페이지에 설명되어 있습니다 : http://www.itk.org/Wiki/ITK/Release_4/SimpleITK/GettingStarted/Visual_guide_to_building_on_Linux#A_simple_C.23_program

우리는 당신이 얻을 방법을 알려 주시기 바랍니다.

HTH

건배 댄