2013-12-11 4 views
-1

В моем консольном приложении я использую stl-карту. когда я компилирую его с visual studio 2012, я получаю ошибку, что карта не найдена во время компиляции.визуальная студия не может найти std: map во время связи

Error 1 error LNK2001: unresolved external symbol "private: static class std::map<int,int,struct std::less<int>,class std::allocator<struct std::pair<int const ,int> > > m_headerDataMap" ([email protected]@@[email protected][email protected]@[email protected]@[email protected][email protected][email protected]@@@[email protected]@[email protected]@A) c:\Users\m\documents\visual studio 2012\Projects\FileReader\FileReader\FileReader.obj FileReader 

Следует ли добавить библиотеку для проекта? Если да, то какой и как.

Я определил карту следующим образом:

static map<int, int> m_headerDataMap; 
+0

Это вся ошибка? Кажется, что у него нет конца '' '. – aschepler

+1

' map' - это библиотека только для заголовков, поэтому вы не должны получать сообщение об ошибке вообще. Можете ли вы включить полное сообщение об ошибке? Я подозреваю, что у вас может быть объявила экземпляр «карты» странным образом. –

+0

@the_mandrill добавил дополнительную информацию к вопросу. – mans

ответ

6

Если у вас есть код, как

class MyClass 
{ 
public: 
    //... 
private: 
    static std::map<int, int> data; 
}; 

int main() 
{ 
    MyClass m; 
} 

Вы будете в конечном итоге с подобными ошибками компоновщика:

ошибка LNK2001: неразрешенный внешний символ «частный: статический класс зЬй :: Карта, класс зЬй :: распределитель>> MyClass :: data "...

Вам нужно определить его где-нибудь. , например. в CPP файл

std::map<int, int> MyClass::data; 

Смотреть предыдущий вопрос here

2

Вы обычно не должны ничего добавлять дополнительные к проекту VS, чтобы получить C++ включены стандартные библиотеки. Убедитесь, что у вас нет ничего неподходящего, установленного в параметрах «ввода» компоновщика в свойствах проекта. (Есть несколько вариантов «игнорировать»).

Вы не упоминаете какие-либо проблемы с компиляцией, но также убедитесь, что вы не замечаете компилятор, кричащий вам предупреждения о какой-то более ранней проблеме с этим вызовом.

+0

Спасибо. Нет проблемы с компиляцией, и нет предупреждения. – mans

Смежные вопросы