Я получил сообщение действительно нечетным ошибка, которая возникает только тогда, когда я добавить следующую строку в мой проект:Странная MFC/VC++ Linker Error (станд :: Список <CRect> уже определен)
std::list<CRect> myVar;
Стоит отметить, что он не должен быть std :: list, это может быть std :: vector или любой другой контейнер STL, который я предполагаю.
Вот сообщение об ошибке:
Ошибка 1 Ошибка LNK2005: "общественность: __thiscall станд :: Список
:: список> (аннулируются)" (?? 0? $ @ список VCRect @@ V? $ распределитель @ VCRect @@@ @@@ станд станд @@ QAE @ XZ) уже определено в SomeLowLevelLibrary.lib
Низкоуровневая библиотека, на которую ссылается сообщение об ошибке, не имеет представления о проекте, который я создаю, он имеет только базовые низкоуровневые функции и не имеет отношения к графическим интерфейсам MFC высокого уровня.
Я получаю ошибку линкера, чтобы уйти, если я изменить строку кода на:
std::list<CRect*> myVar;
Но я не хочу, чтобы взломать его ради него.
Кроме того, не имеет значения, создаю ли переменную в стеке или в куче, я все равно получаю ту же ошибку.
Есть ли у кого-нибудь какие-либо идеи об этом? Я использую Microsoft Visual Studio 2008 SP1 на Vista Enterprise.
Edit: ошибка линкера выше для станд :: Список <> конструктор, я получаю сообщение об ошибке для деструктора, _Nextnode и четких функций.
Редактировать: В других файлах проекта std :: vector не будет ссылаться, в других файлах это может быть std :: list. Я не могу понять, почему некоторые контейнеры работают, а некоторые нет. Связь MFC статична в обеих библиотеках. В библиотеке низкого уровня у нас есть 1 класс, который наследуется из std :: list.
Редактировать: Низкоуровневая библиотека не имеет классов, наследующих от CRect, но использует STL.
У вас есть код для SomeLowLevelLibrary.lib. Если это так, скопируйте исходный код для списка и посмотрите, что вы получите взамен. –
2008-09-29 10:32:39
Можете ли вы предоставить информацию о связи с библиотеками MFC (статические, общие) как вашего проекта, так и SomeLowLevelLibrary.lib. – 2008-09-29 10:45:59