4

我有一个在 Visual Studios 2008 中运行良好的应用程序,我正在尝试将它放入 VS 2010 以使用 .NET 4,但我遇到了一个非常奇怪的问题。当我从发布模式或调试模式运行代码并附加调试器 (F5) 时,运行程序没有问题。但是,当我在没有附加调试器(Shift+F5)的情况下从 Release 或 Debug 运行程序时,当我尝试在GDCM的 dll 中运行一些代码时,会出现访问冲突异常。我已经使用 CMake 和 Swig 创建了 dll,并按照此处的说明调整了为 VS 2010 和 .NET 4 构建所需的说明。

有没有人知道为什么会发生这种情况以及我该如何解决?

这是发生错误的程序示例。同样,如果您在 VS 2010 中使用以下程序创建一个项目,它会在附加调试器时运行良好,如果未附加调试器则失败。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using gdcm;

namespace GDCMVS2010Test
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                Console.WriteLine("This program prints the patient name of a dicom file with gdcm");
                Console.WriteLine("Usage: [input.dcm]");
                return;
            }

            gdcm.Reader reader = new gdcm.Reader();
            reader.SetFileName(args[0]);
            reader.Read();

            gdcm.File file = reader.GetFile();

            gdcm.StringFilter filter = new gdcm.StringFilter();
            filter.SetFile(file);
            string value = filter.ToString(new gdcm.Tag(0x0010, 0x0010));

            Console.WriteLine("Patient Name: " + value);
        }
    }
}
4

4 回答 4

1

您应该真正开始使用 GDCM 特定组来传达您的问题,请参阅:

http://sourceforge.net/apps/mediawiki/gdcm/index.php?title=General_questions#Where_are_the_GDCM_mailing_lists_.3F

此列表中有 100 位 GDCM 用户,他们将能够为您提供帮助。

您还应该提供一个数据集(DICOM 文件)来帮助重现该错误。

谢谢

于 2010-05-28T09:50:49.170 回答
1

客户端配置文件遗漏了您在客户端计算机上不太可能需要的 .Net 框架块。以 ASP .Net 为例。请参阅此链接http://msdn.microsoft.com/en-us/library/cc656912.aspx

于 2010-05-28T12:06:50.377 回答
1

这是因为我使用的 SWIG 版本无法正常工作。最近发布了一个新版本的 SWIG(2.0 版),它解决了这个问题。在我在 GDCM 上重新运行 CMake,然后使用 VS 2010 重建 GDCM,并将 GDCM dll 放回我的示例代码中之后,一切正常。

于 2010-06-07T16:19:46.393 回答
0

检查您的项目属性。当我将目标框架设置为 .NET Framework 4.0 客户端配置文件时,我遇到了这个问题,而它应该是没有客户端配置文件的那个。或相反亦然。

于 2010-05-27T20:41:12.583 回答