2014-01-28 5 views
1

Мой код работает на моем школьном компьютере при использовании Visual Studio, но как только я попытался на своем компьютере с Visual Studio 2012, он компилируется, но дает мне эту ошибку, когда я создаю свой проект:ошибка LNK2019: нерешенный внешний символ для класса unordered_map

Main.obj: ошибка LNK2019: неразрешенный внешний символ «класс станд :: unordered_map, класс станд :: распределитель>, INT, структура станд :: хэш, класс станд :: распределитель>>, структура станд :: equal_to, class std :: allocator>>, class std :: allocator, class std :: allocator> const, int>>> __cdecl getFrequency (класс std :: vector, class std :: allocator>, class std :: allocator, class std :: allocator>>>, class std :: unordered_map, class std :: allocator>, int, struct std :: hash, class std :: allocator>>, struct std :: equal_to, cla ss std :: allocator>>, class std :: allocator, class std :: allocator> const, int>>>) "(? getFrequency @@ YA? AV? $ unordered_map @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@ HU? $ хэш @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @ @@ 2 @ U? $ equal_to @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@@ 2 @ V? $ распределителем @ $ паре U? @ $$ ОЦК? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@ H @ станд @@@ 2 @@ станд @@ V? $ вектор @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @ 2 @@ станд @@ V? $ распределитель @ V? $ basic_string @ DU? $ char_traits @ D @ станд @@ V? $ распределитель @ D @ 2 @@ std @@@ 2 @@ 2 @ V12 @@ Z) ссылка в функции _main C: \ Users \ name.lastname \ Documents \ Visual Studio 2012 \ Projects [Cpp] Сопоставление \ Отладка [Cpp] Сопоставление .exe: фатальная ошибка LNK1120: 1 неразрешенные внешние данные

Поскольку он работает на мой школьный компьютер с точно таким же кодом, я не даю вам код, потому что он очень тяжелый. Я думаю, что проблема в том, что компоновщик не может видеть класс unordered_map, я знаю, как добавить библиотеку в мой проект, но не этот конкретный класс. Любые идеи?

Комментарий, если вы действительно думаете, что код важен.

Заранее благодарен!

EDIT

Вот мой файл Map_Operations.h, где я объявляю getFrequency(); Метод:

#ifndef MAP_OPERATIONS_H_ 
#define MAP_OPERATIONS_H_ 

#include <string> 
#include <unordered_map> 
#include <vector> 

std::unordered_map <std::string, int> getFrequency(std::vector<std::string> FILE_CONTENT, std::unordered_map<std::string, int> MASTER_MAP); 

#endif /* MAP_OPERATIONS_H_ */ 

А вот файл Map_Operations.cpp, где я его реализации:

#include "Map_Operations.h" 

#include <string> 
#include <unordered_map> 
#include <vector> 

using namespace std; 

unordered_map <string, int> getFrequency(vector<string> FILE_CONTENT, unordered_map<string, int> & MASTER_MAP){ 

unordered_map <string, int> MAP; 

// Iterate through the current file being copied and push_back all the words in the 
// DOCUMENTS_ALL vector and in the MAP to compute their frequency 
for(vector<string>::size_type j = 0; j != FILE_CONTENT.size(); ++j){ 

    string TEMP = FILE_CONTENT[j]; 

    unordered_map<string, int>::const_iterator MAP_CURRENT = MAP.find(TEMP); // Create iterator to know if the Key is in the MAP or not 
    unordered_map<string, int>::const_iterator MAP_MASTER = MASTER_MAP.find(TEMP); // Create iterator to know if the Key is in the MAP or not 

    if (MAP_CURRENT == MAP.end()){ // If not in the MAP add it without incrementing 
     MAP[TEMP] = 1; 
    }else{ // If it is in the MAP then increment and add it 
     MAP[TEMP] = MAP[TEMP]+1;   
    } 

    if(MAP_MASTER == MASTER_MAP.end()){ // If not in the MASTER_MAP then add it 
     MASTER_MAP[TEMP] = 1; 
    }else { // If already in it then increment counter 
     MASTER_MAP[TEMP] = MASTER_MAP[TEMP]+1; 
    } 
} 

return MAP; 

}

ответ

1

Проблема не с unordered_map, проблема с getFrequency.

Ссылка на библиотеку, предлагающую эту функцию.

+0

Спасибо, что ответили. Что вы подразумеваете под ссылкой с библиотекой, обеспечивающей эту функцию? – nichus

+0

Ваш проект (или одна из зависимостей ваших проектов) вызывает функцию с именем 'getFrequency', которая реализуется внешней библиотекой, с которой вы должны связываться. –

+0

Ну, у меня есть файл Main.cpp, где я включаю «Map_Operations.h», и я реализовал «Map_Operations.cpp», где есть функция getFrequency(); Как мне это связать? – nichus