2017-01-27 10 views
0

У меня общая ошибка компоновщика в ситуации, когда я не понимаю, почему я ее получаю. Я изменил проект с статической привязки (/ MT) на динамическую компоновку (/ MD). После этого я получаю следующее сообщение об ошибке:Несоответствие обнаружено для «RuntimeLibrary» для объектных файлов из исходных файлов из того же проекта visual studio 2015

Error LNK2038 mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't 
match value 'MT_StaticRelease' in XY.obj XXX [some folders]\XYZ.obj 

Исходные файлы для XY и XYZ являются как часть одного и того же проекта. Проект скомпилирован с/MD. Сначала я подумал, что некоторые файлы не были обновлены в моем восстановлении, поэтому я очистил сборку и перестроил проект. Поскольку у меня по-прежнему такая же ошибка, я вручную удалил папку сборки, содержащую файлы .obj, и восстановил проект. Я все еще получаю ошибку.

Второй эффект, который я не понимаю, что включена библиотека (который я изменил от статической версии к динамической версии) не находит несколько символов:

Error LNK2001 unresolved external symbol __imp__strncat LAAPTOF_Fuzzy_XOP 
[some folders]\ccc_vc120_md.lib(MxNET.obj) 

и т.д ...

Когда я включаю статическую версию библиотеки, эти ошибки исчезают, но я не вижу ошибки в отношении несоответствия библиотеки времени выполнения, которое я ожидал получить.

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

Может кто-нибудь объяснить мне, что я могу делать неправильно?

ответ

0

Я решил проблему. Мой проект был проектом visual studio 2010. Я был предупрежден, что преобразование проекта в более новую версию визуальной студии не всегда выполняется гладко, даже если конвертер сообщает об этом. Я не знаю, действительно ли это проблема, но после создания нового файла проекта все ссылки правильно.