У меня есть приложение, которое я компилирую как код x86, но как отдельную версию, а также код x64. Приложение в основном состоит из двух частей: исполняемого файла c # и неуправляемой dll c ++. У меня проблемы с последним. На моем компьютере для разработки (Windows 7 64-bit, Visual Studio 2008) я создаю установку с проектом развертывания, и эта установка устанавливает приложение в Program Files ... как должно, и приложение запускается. У меня также есть тестовый ПК (64-битная Windows 7, практически ничего другого). Там приложение все еще устанавливается в Program Files ... но оно не запускается, я получаю исключение BadImageFormatException при вызове функции (любой функции) неуправляемой библиотеки DLL. Проблема в том, что мой собственный проект, который производит dll, также использует довольно много свободно доступных библиотек (например, glew32, openal, freeimage и т. Д.). Я позаботился о том, чтобы убедиться, что я использую x64-версии этих библиотеки, но что-то все равно должно быть не так. По какой-то причине одна из библиотек, используемых моей DLL, не доступна в виде кода x64 на тестовом ПК, но она находится на ПК для разработки. По крайней мере, это единственное объяснение, которое у меня есть на данный момент, почему моя установка работает на ПК для разработки, но не на тестовом ПК.
Мой вопрос: как я могу узнать, где проблема. Сообщение об ошибке, которое я получаю, не сообщает никаких полезных подробностей. Я пытался проанализировать мою DLL с зависит, но это выглядит нормально. В нем много зависимых библиотек, таких как X86 (это, вероятно, системные файлы), но все те, которые я использую специально, перечислены как x64.
Есть ли способ проверить, почему Windows на моем тестовом компьютере пытается запустить DLL как код x86, даже если это x64?
Спасибо.
Я заметил кое-что очень странное: мое приложение разворачивается в папке Program Files, как и должно быть для приложения x64, но оно не запускается. Однако, если я скопирую все файлы в папке, в которую он установлен, в другую папку (внутри папки «Документы»), приложение будет работать отлично.