gpt4 book ai didi

c++ - 继承makefile C++ undefined symbol 首先被引用

转载 作者:太空宇宙 更新时间:2023-11-04 16:31:21 24 4
gpt4 key购买 nike

我遇到了编译问题。以下是文件和继承。

dateType.h、dateTypeImp.cpp:定义和实现dateType类
addressType.h、addressTypeImp.cpp:定义并实现addressType类
personType.h、personTypeImp.cpp:定义并实现personType类
extPersonType.h、extPersonTypeImp.cpp:定义并实现extPersonType类
addressBookType.h、addressBookTypeImp.cpp:定义并实现addressBookType类

以下是继承关系和has-the关系。
extPersonType “扩展”(继承)personType 类,它还“具有”每个地址类型和日期类型的一个对象。
addressBookType 类“有”500 个 extPersonType 类型的对象。
(我可以复制粘贴 .h 文件以备不时之需)
因此,extPersonType.h 中有针对“dateType.h”、“addressType.h”、“personType.h”的#include 语句。 addressBookType.h 中有#include "extPersonType.h"。

我有以下 Makefile:

all: main



personTypeImp.o: personTypeImp.cpp
g++ -c -Wall personTypeImp.cpp

dateTypeImp.o: dateTypeImp.cpp
g++ -c -Wall dateTypeImp.cpp

addressTypeImp.o: addressTypeImp.cpp
g++ -c -Wall addressTypeImp.cpp

addressBookTypeImp.o: addressBookTypeImp.cpp
g++ -c -Wall addressBookTypeImp.cpp

main.o: main.cpp
g++ -c -Wall main.cpp

main: main.o addressBookTypeImp.o addressTypeImp.o dateTypeImp.o personTypeImp.o
g++ -Wall main.o addressBookTypeImp.o addressTypeImp.o dateTypeImp.o personTypeImp.o -o main


clean:
rm -f *.o *~ main

所有 .o 行都编译无误。最后的“主要”编译给出了这个错误:

make
g++ -c -Wall main.cpp
g++ -c -Wall addressBookTypeImp.cpp
g++ -c -Wall addressTypeImp.cpp
g++ -c -Wall dateTypeImp.cpp
g++ -c -Wall personTypeImp.cpp
g++ -Wall main.o addressBookTypeImp.o addressTypeImp.o dateTypeImp.o personTypeImp.o -o main
Undefined first referenced
symbol in file
extPersonType::getStatus() const addressBookTypeImp.o
extPersonType::isLastName(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) constaddressBookTypeImp.o

列出了 extPersonType 的更多功能。

想知道可能是什么错误。

最佳答案

错误信息的关键部分是:

Undefined symbol extPersonType::....

基本上,extPersonType 类的符号不属于您的程序。如果您查看 makefile,您会看到这一点

extPersonTypeImp.o: extPersonTypeImp.cpp
g++ -c -Wall extPersonTypeImp.cpp

缺失,您需要将 extPersonType.o 添加到链接器命令中

g++ -Wall main.o addressBookTypeImp.o addressTypeImp.o dateTypeImp.o personTypeImp.o extPersonTypeImp.o -o main

关于c++ - 继承makefile C++ undefined symbol 首先被引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6529653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com