#c# #asp.net #.net #ghostscript
#c# #asp.net #.net #ghostscript
Вопрос:
Я установил GhostScript 9.19 x64 примерно месяц назад для использования в веб-приложении .NET 4, и с тех пор он отлично работает.
После недавней проверки системы управления версиями (первой с момента установки GS) моя оболочка GhostScriptAPI теперь выдает BadImageFormatException
[DllImport("c:\gsdll64.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int gsapi_new_instance(out IntPtr lngGSInstance, IntPtr lngCallerHandle);
intReturn = gsapi_new_instance(out intGSInstanceHandle, callerHandle);
Несмотря на то, что приложение настроено на «Любой процессор», оно не сможет загрузиться с помощью a BadImageFormatException
, если явно задано значение x64, так что на самом деле оно нацелено на x86.
Я понимаю, что мне нужно использовать версию GhostScript для x86 (gsdll32.dll ) или заставить мое приложение работать на x64, однако мой вопрос в том, как GhostScript работал заранее, пока мое приложение и оно были нацелены на две разные платформы (удача, магия, божественное вмешательство)?
Комментарии:
1. Существует флаг «предпочитаю 32-разрядный», посмотрите, установлен ли он.
2. Просто небольшой толчок здесь, вы знаете о том факте, что Ghostscript имеет лицензию AGPL?
3. @KenS Похоже, я нарушаю?
4. @LasseV.Karlsen Предпочитает, чтобы 32-разрядная версия была снята и отключена (спасибо). Я только что добавил условные флаги WIN32 / WIN64 и заметил, что при ориентации на любой процессор весь код в
#if WIN32
ветке отображается серым цветом. Итак, теперь я подозреваю, что по умолчанию VS хочет настроить таргетинг на x64 (моя машина и ОС — x64) и думает, что это произойдет, но затем, возможно, столкнется с чем-то во время сборки, что заставит его переключиться на x86. Однако это «переключение» должно произойти после#if WIN32
сбоя препроцессора, иначе условные флаги никогда не обновляются после его возникновения.5. Самус, я не знаю, это зависит от того, что вы делаете со своим приложением. Мне не хватает подробностей, чтобы рассказать, но я подумал, что это стоит упомянуть, если вы планируете распространять свое приложение или продавать его.