Visual Studios 2008 で正常に動作するアプリケーションがあり、.NET 4 を使用するためにそれを VS 2010 に取り込もうとしていますが、非常に奇妙な問題があります。デバッガーを接続してリリース モードまたはデバッグ モードからコードを実行すると (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);
}
}
}