访问冲突异常仅在未附加调试器的情况下运行C#app时出现

时间:2010-05-27 20:27:11

标签: c# visual-studio-2010 access-violation gdcm

我有一个在Visual Studios 2008中运行良好的应用程序,我试图将其引入VS 2010以使用.NET 4,我有一个非常奇怪的问题。当我从发布模式或调试模式运行代码并附带调试器(F5)时,我没有运行程序的问题。但是,当我在没有附加调试器的情况下从Release或Debug运行程序时(Shift + F5),当我尝试在GDCM的dll中运行某些代码时,我收到了访问冲突异常。我已经使用CMake和Swig创建了dll,并按照here的说明调整了为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 个答案:

答案 0 :(得分:1)

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

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

100名GDCM用户在此列表中,可以为您提供帮助。

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

由于

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

检查您的项目属性。当我将Target Framework设置为.NET Framework 4.0 Client Profile时,我遇到了这个问题,当它应该是一个w / out Client Profile时。反之亦然。