Ошибка компоновщика 2005, 2001 в Visual Studio 2008 - PullRequest
0 голосов
/ 23 июня 2009

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 23 июня 2009

Решил.

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

...