生成文件问题(体系结构x86_64的未定义符号:"_main",引用自:主可执行文件的隐式入口/启动)



我正在尝试使用 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;
}
};    

有两个单独的错误。

首先,您忘记将main.cpp添加到生成文件中。

其次,您的main.cpp不包含名为main的全局函数。名为main的类成员函数不符合条件。您需要在具有外部链接的全局命名空间中名为main的函数。

相关内容

最新更新