[英]Access Violation Exception only appearing when running C# app without debugger attached
我有一个在Visual Studios 2008中运行良好的应用程序,我试图将其纳入VS 2010以便使用.NET 4,我有一个非常奇怪的问题。 当我从发布模式或调试模式运行代码并附带调试器(F5)时,我没有运行程序的问题。 但是,当我在没有附加调试器的情况下从Release或Debug运行程序时(Shift + F5),当我尝试从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);
}
}
}
您应该真正开始使用GDCM特定组来传达您的问题,请参阅:
100名GDCM用户在此列表中,可以为您提供帮助。
您还应该提供数据集(DICOM文件)以帮助重现错误。
谢谢
客户端配置文件错过了客户端计算机上不太可能需要的.Net框架块。 以ASP .Net为例。 请参阅此链接http://msdn.microsoft.com/en-us/library/cc656912.aspx
这是因为我使用的SWIG版本无法正常工作。 最近发布了一个新版本的SWIG(版本2.0),它解决了这个问题。 在我重新使用GDCM上的CMake,然后使用VS 2010重建GDCM,并将GDCM dll放回到我的示例代码中之后,一切正常。
检查您的项目属性。 当我将Target Framework设置为.NET Framework 4.0 Client Profile时,我遇到了这个问题,当它应该是一个w / out Client Profile时。 或相反亦然。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.