Ошибка компоновщика 2005, 2001 в Visual Studio 2008

У меня есть проект ATL COM, который отлично компилировался в VC6, который дает следующие ошибки компоновщика при компиляции в VS2008.

ошибка LNK2005: «void * __cdecl operator new (unsigned int)» (?? 2 @ YAPAXI @ Z) уже определено в libcmt.lib (new.obj) Файл: uafxcw.lib

Есть еще три похожие ошибки для delete, new[] и delete[].

Я проверил несколько статей в сети, и большинство из них говорят, что это конфликт между библиотеками DLL CRT и MFC. (Порядок получения). В одной статье предлагается добавить конфликтующую библиотеку в список игнорируемых библиотек в настройках проекта.

При этом у меня осталась одна ошибка:

ошибка LNK2001: неразрешенный внешний символ __afxForceEXCLUDE Файл: LMAN.Lib

Ошибка указывает на библиотеку, на которую ссылается этот проект (библиотека, разработанная нами).

Есть какие нибудь идеи как это починить? Я уверен, что это обычная проблема для людей, выполняющих переход на VS 2008.


person bobbyalex    schedule 23.06.2009    source источник


Ответы (1)


Решил это.

Исключать uafxcw.lib не требовалось. Просто нужно было убедиться, что библиотеки MFC не использовались. Наша библиотека LMAN.lib использовала Afxdisp.h (dll MFC), который не требовался. Я удалил включение из этого проекта, а затем вуаля! - сборка выполнена.

person bobbyalex    schedule 23.06.2009