2015-02-23 3 views
1

Первый раз для использования gdcm в C# имеет исключение в первой строке. пожалуйста, любая помощьИнициализатор типа для 'gdcm.gdcmPINVOKE' бросил исключение

gdcm.ImageReader gReader = new gdcm.ImageReader(); 
gReader.SetFileName(inputFile); 

ошибка: Тип инициализатор «» gdcm.gdcmPINVOKE бросил исключение

InnerException является: { "Тип инициализатор„“SWIGExceptionHelper бросил исключение. «}

+0

Продолжайте смотреть на innerExceptions. Вероятно, вы получите ошибку «Файл не найден». Используйте тег [mono], если это необходимо. –

+0

Было ли у вас какое-либо решение? я столкнулся с той же проблемой – minakshi

ответ

2

может быть поздно, но я только что прошел это решение, чтобы скопировать все Dlls (fromd gdcm здание бен папки) в вашем бен \ отладки или освободить папку,

0
  1. make progect.
  2. Скопируйте ВСЕ dll из gdcm bin/release в папку проекта debug/release
  3. добавьте ссылку на референт gdcm-sharp из папки проекта debug/release. Если его работа попробует с другой папкой
  4. В «Платформы решения» (я использую Visual Studio 2015) установите x86 или x64 (или создайте. Скопируйте настройки из «Любой процессор»)
  5. запустить.
  6. вы потрясающий!

PS Когда я построить GDCM я не обратить внимание, что построить его для Win32, но попытаться построить для «Any CPU»

0

он работал для меня, изменив целевую структуру от 4,5 до 4,0

0

Из FAQ:

исключения dllnotfound

Если вы получаете dllnotfound исключения, то это означает, что что вы не копировали вновь созданные dll в шагах 6 и 7.

Это общая ошибка, что означает, что DLL, используемая исполняемым файлом, не найдена. Это не обязательно означает, что DLL, на которую ссылаются напрямую, является проблемой. Как правило, если вы не копировали файлы gdcm.dll и связанные с ними библиотеки, но установили gdcmsharpglue.dll в качестве одной из ваших ссылок на программы, вы получите эту ошибку. Это не означает, что gdcmsharpglue отсутствует, это означает, что основная библиотека отсутствует.

Чтобы узнать, какая DLL отсутствует, попробуйте использовать Dependency Walker. Эта программа найдет недостающую библиотеку, а затем вы можете поместить ее на путь исполняемого файла.

Одним из способов решения этой проблемы является настройка каталога «includes» в вашем дереве приложений (при условии, что вы находитесь в Windows, а не Mono - Mono может быть другим), который содержит библиотеки gdcm. Оттуда вы можете создать событие post-build для своего проекта, поэтому файлы будут скопированы, когда вы выполните сборку. Этот подход занимает некоторое время, каждый раз, когда вы выполняете сборку, но экономит время, когда вы пытаетесь выяснить, где находятся ваши библиотеки, и почему вы получаете DLL не найденные исключения.

  1. открыть ваше решение
  2. правой кнопкой мыши на вашем проекте
  3. выберите «создать события» (третья вкладка сверху вниз)
  4. поместить команды некоторые дос в «Командная строка события после построения» коробка. У меня есть
mkdir Debug 
mkdir Release 
copy ..\..\..\Includes\gdcm\*.dll ..\Debug\*.dll 
copy ..\..\..\Includes\gdcm\*.dll ..\Release\*.dll 

Два MKDIR там внутри, так что если вы восстановление с нуля, вы не получите ошибку в сборке. То есть, если вы создаете отладочную версию и у вас нет каталога выпуска, строки копирования выдают вам ошибку. Если вы не скопируете оба каталога, когда вы собираетесь строить свою сборку релизов после работы в отладке все это время, ваша сборка релизов не будет работать, и вы будете очень расстроены, когда вы поймете, что забыли скопировать dll как для выпуска, так и для отладки.

Смежные вопросы