32-битная библиотека в 64-битной системе - PullRequest
2 голосов
/ 20 июня 2011

Может ли это вызвать проблемы, если я использую 32-битную библиотеку в 64-битной системе?

Какие могут быть несовместимости?

Я знаю, что этот вопрос слишком расплывчатый. Пример:

Я пытался настроить 32-битную библиотеку FreeGlut с VS2010 на Windows 7 64-битной. Сначала было много проблем. Итак, я искал 64-битный FreeGLUT, думая, что 32-битный FreeGlut может конфликтовать с 64-битными окнами. Но позже мне удалось без проблем запустить мой 32-битный FreeGlut с 64-битными окнами.

Вопрос в том, есть ли в программе что-то, на что нам следует обратить внимание при использовании тех библиотек, которые не соответствуют системе. (32-битная библиотека в 64-битной ОС)

Ответы [ 5 ]

4 голосов
/ 20 июня 2011

64-битная Windows полностью поддерживает 32-битные приложения.Фактически, конфигурация по умолчанию для Visual C ++ заключается в создании приложения x86 независимо от операционной системы, в которой оно выполняется.

Там , некоторые , получилось .знать о запуске 32-битного приложения в 64-битной Windows.Например, существует перенаправление реестра (чтобы избежать этого, вы передаете KEY_WOW64_64KEY, например, RegOpenKeyEx).Также есть перенаправление файловой системы.Это важные вещи, о которых следует помнить, например, при чтении значений конфигурации системы.

Также помните, что нельзя смешивать 32 и 64 битность в одном и том же процессе.Ваше 32-битное приложение не может использовать 64-битные DLL или статические библиотеки.

2 голосов
/ 20 июня 2011

Речь идет не об операционной системе - Windows не заботится, 32-битный или 64-битный код.Важно, что ваш процесс имеет ту же разрядность, что и все библиотеки, которые он загружает, и все они должны быть одинаковой битности.

1 голос
/ 20 июня 2011

Вас может заинтересовать эта ссылка , объясняющая распространенные ошибки компилятора при переносе на 64-битную версию. Это может помочь вам решить вашу проблему.

Чтобы попытаться ответить на ваш вопрос более прямо, есть вещи, которые могут привести к сбою 32-битных библиотек в 64-битной среде, но это слишком много информации, чтобы поделиться в SO-ответе.

Эта ссылка - это индекс MSDN, относящийся к разработке для 64-битных систем, который также может вас заинтересовать.

1 голос
/ 20 июня 2011

Visual Studio может компилироваться для 32-битных или 64-битных в зависимости от настроек проекта.

Вероятно, вы хотите задать вопрос о связывании 32-битной библиотеки с 64-битной программой

Ответ:
Вы не можете напрямую ссылаться на 32-битный код внутри 64-битной программы.
Единственный вариант - скомпилировать 32-битную (автономную) программу, которая может работать на вашей 64-битной платформе (используя ia32), а затем использовать межпроцессное взаимодействие для связи с ней из вашей 64-битной программы.

0 голосов
/ 20 июня 2011

Ваш вопрос может быть о том, как разработать код, который будет работать на 64-битном и 32-битном оборудовании.Информация об этом здесь .В частности, вы должны будете следовать инструкциям здесь , чтобы включить 64-битные инструменты сборки.

Если вы создаете 64-битные двоичные файлы, вам нужно будет подключиться к 64-битным библиотекам.Обратите внимание, что 32-разрядные двоичные файлы должны нормально работать в 64-разрядных системах Windows, поэтому вам может и не понадобиться эта проблема.

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