我有一个在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);
}
}
}
答案 0 :(得分:1)
您应该真正开始使用GDCM特定群组来传达您的问题,请参阅:
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时。反之亦然。