Мой код работает на моем школьном компьютере при использовании 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;
}
Спасибо, что ответили. Что вы подразумеваете под ссылкой с библиотекой, обеспечивающей эту функцию? – nichus
Ваш проект (или одна из зависимостей ваших проектов) вызывает функцию с именем 'getFrequency', которая реализуется внешней библиотекой, с которой вы должны связываться. –
Ну, у меня есть файл Main.cpp, где я включаю «Map_Operations.h», и я реализовал «Map_Operations.cpp», где есть функция getFrequency(); Как мне это связать? – nichus