C#的Simple-ITK安装教程

时间:2012-05-31 01:48:27

标签: c# itk

前段时间我用过C ++和我正在尝试在c#中使用简单的itk。我看过MICCAI 2011教程,我正在努力开始。我正在使用Windows 7 64位计算机和Visual Studio Ultimate 2010。 根据{{​​3}}我应该能够解压缩并将.dll引用到我的项目中,它应该正常工作。 我可以将SimpleITKCSharpManaged.dll添加到我的引用中。但是我无法将SimpleITKCSharpNative.dll添加到我的引用中。它给了我错误: 请确保该文件是可访问的,并且它是有效的程序集或COM组件。

然后我尝试运行一个简单的控制台应用程序

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复制到我的bin / debug目录,但我仍然遇到同样的错误。

有关如何解决此问题的任何想法,或者如何使用CMAKE从源代码实际构建本地而无法启动和运行SimpleItk?

由于

1 个答案:

答案 0 :(得分:0)

来自ITK的Dan Mueller回答了我的问题。这就是他要说的话:

嗨Federico,

您收到的错误提供了以下提示:    “试图加载格式不正确的程序。”

当.NET程序试图访问a中的函数时,会发生此错误 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

干杯,丹