#build #x86 #64-bit #executable #binary-compatibility
Вопрос:
Я пытаюсь скомпилировать свои приложения (которые используют сторонние библиотеки) для платформы x64. Однако выбор x64 из диспетчера конфигурации сборки в моем VS2008 Pro, похоже, не работает. Двоичный файл действительно создается, но мой клиент не смог заставить его работать на x64.
Интересно, могут ли быть причиной сторонние библиотеки DLL. У кого-нибудь есть какие-нибудь идеи на этот счет?
Ответ №1:
У вас есть x64 — версии сторонних библиотек? Если нет, то вам не повезло. Процесс должен быть либо полностью x86, либо x64, вы не можете смешивать и сопоставлять библиотеки. Если библиотеки являются библиотеками DLL, то вам все равно нужны библиотеки экспорта из сборки x64.
Каким образом выбор конфигурации x64 в VS не работает?
Обновлено: Если ваше приложение является .NET и не зависит от архитектуры, оно будет загружено как 64-разрядное в 64-разрядных ОС. Однако, если он полагается на 32-разрядные библиотеки DLL, то это произойдет во время выполнения. Вы можете заставить свой exe-файл всегда загружать 32-разрядную версию с помощью утилиты corflags.
Ответ №2:
Как сказал Роб Уокер. Вы можете узнать больше, используя программу «зависит» от SysInternals на машине x64.
Комментарии:
1. Зависит не от sysinternals. Раньше он распространялся вместе с Visual Studio, но теперь его можно найти по адресу dependencywalker.com
Ответ №3:
Удалось точно определить источник проблемы. Это была одна из настроек (Шифрование кода IL) в инструменте обфускации исходного кода (Intellilock 1.1.0.4), из-за которой двоичный файл не смог работать в среде x64.
Отключение этого параметра устранило проблему.
Ответ №4:
«выбор x64 из диспетчера конфигурации сборки из моего VS2008 Pro, похоже, не работает»
Я не уверен, почему вы вообще получаете двоичные файлы, но помните, что инструменты x64 по умолчанию не установлены. Вернитесь и повторно запустите установщик VC2008, выполните пользовательскую установку и в разделе дерево VC убедитесь, что установлен флажок для 64-разрядного компилятора. Если это не так, проверьте это и запустите установку. Затем попробуйте свою сборку.
Вам действительно нужны 64-разрядные версии сторонних библиотек DLL, и вам нужно правильно указать все пути к include и lib, а также ваши выходные папки, но установка инструмента-это первый шаг.
Ответ №5:
В моем приложении нет установщика. Я создал его как «портативное приложение» с .NET2.0 в качестве предварительного условия.
Я отправил тот же запрос поставщику. Все еще жду, когда они вернутся, если у них есть бит x64.
Тем временем я нахожусь в процессе покупки копии x64 Vista, чтобы лично протестировать ее. Я не могу жертвовать своими пользователями, чтобы проверить это для меня. Я буду держать эту тему в курсе, как только у меня появятся новые обновления.
Спасибо.