Могу ли я преобразовать мои 32-битные VC ++ Dlls в 64-битные в моей 32-битной среде?
Вы можете использовать 32-битную систему для компиляции кода для 64-битной системы, если у вас есть 64-битные компиляторы (некоторые выпуски некоторых версий Visual Studio не включают 64-битные компиляторы и т. Д.). Поскольку вы смогли установить целевую платформу на x64 и скомпилировать код, похоже, у вас есть доступные компиляторы.
Тестирование и отладка сложнее, если вы выполняете компиляцию в 32-битной системе. Очевидно, вы должны запустить свои тесты в системе x64, поэтому теперь вы вынуждены использовать удаленный отладчик.
есть ли способ, которым я могу установить платформу для проектов VC ++
также что-то вроде «Любой процессор»?
Это не имеет смысла для нативного C ++. Dll с нативным кодом - это определенно 32-битный или 64-битный файл кода. Управляемый код может поддерживать «Любой ЦП», потому что JIT заботится о компиляции IL в действительные коды операций платформы, поэтому он может преобразовываться в x86 или x64 в зависимости от ситуации.
Проекты VC ++ не создавались
Используйте команду Менеджера конфигурации меню «Сборка», чтобы проверить конфигурацию сборки. Вы можете обнаружить, что в конфигурации есть запись для вашего проекта VC ++ Dll для платформы x64, но флажок Build снят.
фатальная ошибка LNK1112: тип компьютера модуля X86 конфликтует с целью
тип машины х64
Компоновщик сообщает вам, что целью для связанного файла является x64 (что вам нужно), но модуль (файл), который вводится в компоновщик, был создан для x86, поэтому он конфликтует с этой целью. Что вы делаете, чтобы решить эту проблему, зависит от того, что модуль.
Если вы получаете эту ошибку с помощью файла obj, созданного путем компиляции одного из файлов cpp вашего проекта, то проблема заключается в том, что ваш проект компилирует этот файл cpp для x86 вместо x64.
Скорее всего, вы получаете эту ошибку для файла LIB (или другого файла), связанного с вашим проектом - например, файла LIB из какого-то SDK. В этом случае исправление, вероятно, заключается в изменении свойств проекта, поэтому вы используете правильный (то есть, x64) файл LIB. Некоторые SDK используют разные имена файлов для 32- и 64-битных версий файла LIB. Другие используют одно и то же имя для файла LIB, но хранят версии x86 и x64 в разных каталогах.
Хорошим местом для начала будет Project | Свойства | Linker. На вкладке Общие есть поле «Дополнительные каталоги библиотек». Любая запись в нем, вероятно, должна указывать на разные каталоги для платформ x86 и x64 (если только для хранения файлов x86 и x64 не используется определенный каталог). На вкладке «Вход» есть поле «Дополнительные зависимости». Любые записи там, вероятно, должны быть одинаковыми для всех платформ (кроме случаев, когда для отличия файлов x86 и x64 используются разные имена файлов).
Еще одно место, чтобы проверить это Инструменты | Варианты | Проекты и решения | Каталоги VC ++. В этих настройках перечислены различные каталоги, в которых ищутся определенные типы файлов. Есть отдельные списки для каждой платформы. В вашем случае вы хотели бы проверить список «Библиотечные файлы». Для платформы x64 вы должны убедиться, что в списке «Файлы библиотек» указаны каталоги, содержащие версии библиотек x64.