我正在尝试使用Makefile来为c ++(霍夫曼压缩)编译我的项目,但我不断收到此编译器错误:
Undefined symbols for architecture x86_64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [huff] Error 1
由于这是我的任务,所以我认为我无法将所有代码都置于联机状态,但是我应该能够包含我的Makefile,并且我还将包含我的主要cpp文件,而且目前还很准
all: huff
huff: HuffmanCompression.o PriorityQueue.o Node.o TreeNode.o FrequencyCounter.o BitStream.o HuffmanTree.o
g++ -Wall -std=c++11 HuffmanCompression.o PriorityQueue.o Node.o TreeNode.o FrequencyCounter.o BitStream.o HuffmanTree.o -o huff
HuffmanCompression.o: HuffmanCompression.cpp PriorityQueue.o HuffmanTree.o
g++ -c HuffmanCompression.cpp
PriorityQueue.o: PriorityQueue.cpp PriorityQueue.h Node.o
g++ -c PriorityQueue.cpp
Node.o: Node.cpp Node.h
g++ -c Node.cpp
TreeNode.o: TreeNode.cpp TreeNode.h
g++ -c TreeNode.cpp
FrequencyCounter.o: FrequencyCounter.cpp FrequencyCounter.h
g++ -c FrequencyCounter.cpp
BitStream.o: BitStream.cpp BitStream.h FrequencyCounter.o
g++ -c BitStream.cpp
HuffmanTree.o: HuffmanTree.cpp HuffmanTree.h TreeNode.o
g++ -c HuffmanTree.cpp
clean:
rm -f huff *.o
这是主要的cpp:
#include <list>
#include "HuffmanTree.h"
#include "PriorityQueue.h"
class HuffmanCompression {
int main(int argc, char** argv) {
//std::list<FrequencyCounter> mylist;
return 0;
}
};
答案 0 :(得分:0)
有两个单独的错误。
首先,您忘记将main.cpp
添加到生成文件中。
第二,您的main.cpp
不包含名为main
的全局函数。名为main
的类成员函数不符合条件。您需要在具有外部链接的全局名称空间中使用名为main
的函数。