Access Violation Exception появляется только при запуске приложения на C # без подключенного отладчика - PullRequest
4 голосов
/ 28 мая 2010

У меня есть приложение, которое прекрасно работает в Visual Studios 2008, и я пытаюсь установить его в VS 2010 для использования .NET 4, и у меня действительно странная проблема. Когда я запускаю код из режима выпуска или режима отладки с подключенным отладчиком (F5), у меня нет проблем с запуском программы. Однако, когда я запускаю программу из Release или Debug без отладчика (Shift + F5), я получаю исключение нарушения прав доступа при попытке запустить некоторый код в dll из GDCM . Я создал dll, используя CMake и Swig и следуя инструкциям здесь , корректируя инструкции там, где это необходимо для сборки для 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 ]

1 голос
/ 07 июня 2010

Это произошло потому, что используемая мной версия SWIG работала некорректно. Недавно была выпущена новая версия SWIG (версия 2.0), которая решает эту проблему. После того, как я перезапустил CMake на GDCM, а затем перестроил GDCM с VS 2010 и снова поместил библиотеки GDCM в мой пример кода, все работало нормально.

1 голос
/ 28 мая 2010

Вы действительно должны начать использовать определенные группы GDCM для сообщения о своих проблемах, см .:

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

100 пользователей GDCM находятся в этом списке и смогут вам помочь.

Вы также должны предоставить набор данных (файл DICOM), чтобы помочь с воспроизведением ошибки.

Спасибо

1 голос
/ 28 мая 2010

В профиле клиента пропущены фрагменты .Net framework, которые вряд ли вам понадобятся на клиентском компьютере ASP .Net например. Смотрите эту ссылку http://msdn.microsoft.com/en-us/library/cc656912.aspx

0 голосов
/ 28 мая 2010

Проверьте свойства вашего проекта. Я столкнулся с этой проблемой, когда для моей Target Framework был установлен клиентский профиль .NET Framework 4.0, когда он должен был быть одним без клиентского профиля. Или наоборот.

...