Linker Error C++ “undefined reference ”
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What is an undefined reference/unresolved external symbol error and how do I fix it?
试图通过
我得到错误:
1 2 3 | /tmp/cc1pZ8OM.o: In function `main': main.cpp:(.text+0x148): undefined reference to `Hash::insert(int, char)' collect2: error: ld returned 1 exit status |
主CPP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include <functional> #include"Hash.h" using namespace std; int main(int argc, char *argv[]) { //preset prime number int prime = 101; hash<char> h1; int key; Hash HashTable; // check for Request & string parameters if(argc != 3) { cout <<"Run program with 2 parameters. [Lower Case]" << endl; cout <<"[1] insert, find, or delete" << endl; cout <<"[2] string" << endl; } if(strcmp(argv[1],"insert") == 0) { //Get Hash for argv[2] aka value key = h1(*argv[2]); //check 1 cout <<"Hash:" << key << endl; key = key % prime; //check 2 cout <<"Mod 101 Hash:" << key << endl; HashTable.insert(key, *argv[2]); //PROBLEM here } return 0; } |
哈希.h文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <iostream> #include <cstring> #include"LinkedList.h" using namespace std; class Hash { //100 slot array for hash function LinkedList *hashFN[100]; public: void insert(int key, char value); //void deleteItem(int key); //char* find(int key); }; |
有什么想法吗?使用此方法生成具有设置大小的哈希表。
编辑:hash.cpp文件
1 2 3 4 5 6 7 8 9 10 11 | #include <iostream> #include <cstring> #include"Hash.h" using namespace std; void Hash::insert(int key, char value){ *hashFN[key]->addFront(value); cout <<"Success!" << endl; } |
正在尝试通过终端编译:
g++ -c Hash.cpp -o Hash.o
g++ -o prog1 main.cpp Hash.o -std=c++0x
它以某种方式进入一个无限循环。
您的头文件
解决方案是在创建实际的程序二进制文件时将所有文件链接在一起。当使用g++前端时,可以通过在命令行上一起指定所有源文件来完成这一操作。例如:
1 | g++ -o main Hash.cpp main.cpp |
将创建名为"main"的主程序。
此错误告诉您所有信息:
undefined reference toHash::insert(int, char)
您没有链接到
您的错误表明您没有使用