Russian Qt Forum
Май 03, 2024, 23:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка линковщика на QMap<QString, int> (VS2008, Qt 4.4.3)  (Прочитано 4164 раз)
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« : Август 06, 2014, 10:16 »

Добавил член класса
Код
C++ (Qt)
QMap<QString, int> qmqsi;
Линковщик выдает ошибку:
Код
C++ (Qt)
error LNK2005: "private: static struct QMap<class QString,int>::Node * __cdecl QMap<class QString,int>::concrete(struct QMapData::Node *)" (?concrete@?$QMap@VQString@@H@@CAPAUNode@1@PAU2QMapData@@@Z) already defined in ...  
fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe (tool returned code: 1169)
Смена имени переменной не помогает.
После замены <QString, int> на что-то другое, например <QString, QString>, ошибка исчезает.
Как избавиться от этой ошибки?

Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 06, 2014, 11:00 »

static struct - мембер статический? Приложи сюда пару h/cpp.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« Ответ #2 : Август 06, 2014, 11:22 »

Нестатический.
Слово static в h и cpp не встречается.
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #3 : Август 06, 2014, 11:50 »

Вот такой тестовый класс отлично компилируется
Код
C++ (Qt)
#ifndef WITHQMAP_HPP
#define WITHQMAP_HPP
 
#include <QObject>
#include <QMap>
 
class WithQMap : public QObject
{
   Q_OBJECT
public:
   explicit WithQMap(QObject *parent = 0);
 
   QList<QString> keys();
private:
   QMap<QString,int>     str_int_map_;
   QMap<QString,QString> str_str_map_;
};
Код
C++ (Qt)
#include "withqmap.hpp"
 
WithQMap::WithQMap(QObject *parent) :
   QObject(parent)
{
}
 
QList<QString> WithQMap::keys()
{
   return str_int_map_.keys();
}
Так что проблема не в QMap<QString,int> , правда я тестировал на более свежих версиях Qt и msvc
« Последнее редактирование: Август 06, 2014, 11:52 от alex312 » Записан
vizir.vs
Гость
« Ответ #4 : Август 06, 2014, 16:42 »

Судя по
Код:
fatal error LNK1169: one or more multiply defined symbols found
У тебя эта мапина два раза определена.
Записан
qtkoder777
Частый гость
***
Offline Offline

Сообщений: 245


Просмотр профиля
« Ответ #5 : Август 12, 2014, 11:11 »

Если бы два раза, ругался бы компилятор.
Искал по проекту, такая карта только в одном месте.
решил проблему тупым преобразованием QString->int, т.к. QMap<QString, QString> работает
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.122 секунд. Запросов: 23.