Visual Studio 2008에서 잘 작동하는 응용 프로그램이 있으며 .NET 2010을 사용하기 위해 VS 2010에 가져 오려고합니다. 이상한 문제. 릴리스 모드 또는 디버거가 부착 된 디버그 모드 (F5)에서 코드를 실행할 때 프로그램 실행에 문제가 없습니다. 그러나 디버거 (Shift + F5)를 연결하지 않은 상태에서 릴리스 또는 디버그 프로그램을 실행하면 GDCM의 DLL에서 일부 코드를 실행하려고하면 액세스 위반 예외가 발생합니다. 나는 CMake와 Swig을 사용하여 지침을 따라 here VS 2010과 .NET 4를 위해 필요한 빌드를 조정했다.디버거없이 C# 응용 프로그램을 실행하는 경우에만 액세스 위반 예외가 표시됨
어떤 일이 일어나고 있는지 그리고 어떻게 해결할 수 있는지에 대한 아이디어가있다. 그것?
다음은 오류가 발생한 프로그램의 예입니다. 다시 말하지만, 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);
}
}
}
복제 코드를 게시 할 수 있습니까? 확인해야 할 첫 번째 사항은 잘못된 데이터와 p/Invoke 서명을 전달하는 것입니다. –
dll에서 모든 방법에 액세스 할 때마다 나타납니다. 아주 간단한 예제 코드를 게시했습니다. – Jon
적절한 gdcm dll과 함께 전체 VS 솔루션이 필요하기 때문에 복제를 허용하는 코드를 게시하는 방법을 모르겠습니다. – Jon