2012-06-01 3 views
1

Всякий раз, когда я создаю новый проект в Visual Studio 2010 и не устанавливаю определенную платформу (в моем случае x64), сначала я не смогу полностью изменить ее. Итак, я настраиваю все, что нужно, с внешней библиотекой (скомпилировано как x64), а затем нажмите, чтобы скомпилировать ее, очевидно, не удалось, так как две платформы не совпадают.Как заставить Visual Studio 2010 использовать x64?

sfml-graphics-s-d.lib(RenderStates.obj) : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'

Заметили, что я изменить его на x64 с Build-> Конфигурация-Manager-> Активный projectplattform-> New> ...- 64. Это то же самое, что я сделаю, прежде чем делать что-нибудь еще, и это работает, но если я сделаю это потом я получаю сообщение об ошибке компоновщика:

libcpmtd.lib(uncaught.obj) : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'

The * .obj файл может меняться от проекта к проекту (например, соиЬ. obj), и из моего понимания Visual Studio выбирает стандартную библиотеку x86 и не изменяет ее решение после того, как я переключил платформу.

Так что на вопрос: как заставить VS использовать новую указанную платформу x64 - также для стандартной библиотеки?

Примечание: Создание новой настройки конфигурации автоматически изменит настройки компоновщика для целевой машины: MachineX64 (/MACHINE:X64)

Примечание: Не уверен, если это отношение, но я связывающая библиотеки времени выполнения статически Multithreaded-Debug (/MTd)

+0

Похоже, эта проблема: http://stackoverflow.com/a/2850513/1262104 – Mesop

+0

Я уже делал то, что они там предлагают, но компоновщик находит где-то файлы .obj, скомпилированные для x86 вместо x64. – Lukas

+0

Вы уверены, что используете x64 .libs? Похоже, вы пытаетесь использовать x86 libs с исполняемым файлом x64. – David

ответ

2

Если кто-нибудь столкнется с теми же проблемами, что и я, он может найти обсуждение и решение по адресу the MSDN 'forum'.

OK, I found it, LibraryPath corresponds to Library Directories property in VC++ Directories project property page. That explains what happened, that value is usually inherited so it changes automatically when you create add x64. But since you modified that value it is now local to the project and it simply gets copied when add x64... with all those x86 specific dirs.

I suppose it's simpler and safer to just add that lib dir in Linker\General\Additional Library Directories

+0

Это хорошо, Лукас, вы можете отредактировать ответ с фактическим ответом вместо ссылки, это на случай изменения URL-адреса, или сайт опустится или опустит поток. (Что происходит очень часто). –

+2

@DavidFreitas сделано! :) – Lukas

0

Ответ Лукаса выше правильный. Однако возможны дополнительные осложнения.

Если изменение пути к каталогу библиотеки не работает, убедитесь, что ваш файл vcxproj не доступен для чтения или попробуйте отредактировать пути непосредственно в файле vcxproj.

С помощью надстройки VS Perforce изменение путей и здания в библиотечных каталогах может фактически не сохранять файл проекта, и вы не получите предупреждение о том, что файл доступен только для чтения, что позволяет сборке продолжать работу со старым , неправильные настройки.

Смежные вопросы