c++ - 运行自定义 Makefile 时出现未定义的引用错误
问题描述
我正在编写 C++ 中的所有基本数据结构,我从 LinkedList 开始。
我有 LinkedList.h,它是 LinkedList 的类定义,具有嵌套的 LinkedNode 类定义。LinkedList.cpp 和 LinkedNode.cpp 包含 LinkedList.h 规定的类中所有函数的实际函数实现。我也有 LinkedListTests.h 和 LinkedListTests.cpp,其中 LinkedListTests.h 有一组函数来测试我的 LinkedList 实现,LinkedListTests.cpp 有一个 main 函数,它调用 LinkedListTests.h 中的函数。
所有 .cpp 文件都有:
#include "LinkedList.h"
在他们的标题中,LinkedListTests.cpp 也有:
#include "LinkedListTests.h"
在里面。
这是我为编译和链接整个项目而创建的 makefile:
LinkedList: LinkedListTests.o LinkedList.o LinkedNode.o
g++ LinkedListTests.o LinkedList.o LinkedNode.o -o LinkedList
LinkedListTests.o: LinkedListTests.cpp LinkedListTests.h LinkedList.h
g++ -c LinkedListTests.cpp
LinkedList.o: LinkedList.cpp LinkedList.h
g++ -c LinkedList.cpp
LinkedNode.o: LinkedNode.cpp LinkedList.h
g++ -c LinkedNode.cpp
clean:
rm *.o LinkedList
关于为什么我得到未定义的参考错误的任何帮助?我相信所有的 .cpp 文件都应该编译并链接在一起,但事实并非如此。
作为参考,我在 Kali Linux 虚拟机上使用 g++ 编译和运行。
解决方案
推荐阅读
- salesforce - Journey Builder 错误警报
- excel - 如何使用索引/行公式跨列组合多行数据?
- c - C:为什么为 int 参数传递 float/double 文字不会引发警告?
- outlook-web-addins - 如何在 IIS 上部署 Outlook Web 插件清单,以便用户可以通过我的插件 > 自定义插件添加?
- dns - 使用 OpenVPN 的云 DNS 无法在客户端解析
- excel - Excel依赖列表推回
- web-services - Web 服务 - SOAPui - 接收器无法序列化节点 AXIS2
- spring - Spring如何铸造动态类型扩展接口
- functional-programming - 如何在变化的 Rest/JSON 端点上使用 F# 类型提供程序?
- mysql - 如何查询这些复杂的数据?它只关心连接,我还需要了解查询将如何工作