2012-05-31 138 views
2

我前段時間用C++與ITK,現在我想在c#中使用簡單的itk。我已經看過MICCAI 2011教程,我正在嘗試着手。我正在使用Windows 7 64位計算機和Visual Studio Ultimate 2010. 根據this wiki,我應該能夠將.dlls解壓縮並引用到我的項目中,並且它應該可以正常工作。 我可以將SimpleITKCSharpManaged.dll添加到我的參考。但是我無法將SimpleITKCSharpNative.dll添加到我的引用中。它給我錯誤: 請確保該文件是可訪問的,並且它是一個有效的程序集或COM組件。Simple-ITK安裝教程C#

然後我嘗試運行一個簡單的控制檯應用程序

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’的類型初始值引發了異常。」} 和內部異常是: {「試圖加載程序格式不正確的(從HRESULT異常:0x8007000B)。」}

我已經盡力了SimpleITKCSharpNative.dll複製到我的斌/調試目錄和我米仍然得到相同的錯誤。

有關如何解決這個問題的任何想法,或者如何在沒有使用CMAKE從源代碼本地構建它的情況下啓動並運行SimpleItk?

感謝來自ITK

回答

0

丹穆勒回答我的問題。以下是他說的話:

嗨費德里科,

您收到的錯誤給出了提示:「試圖加載程序格式不正確」

當.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)。這是在 以下頁面說明(此頁是Linux,但同樣的方法是 需要Windows還): http://www.itk.org/Wiki/ITK/Release_4/SimpleITK/GettingStarted/Visual_guide_to_building_on_Linux#A_simple_C.23_program

請讓我們知道您的身體情況如何。

HTH

乾杯,丹