C++"未定义的引用"函数错误
C++ "undefined reference to" function error
我在为自定义数据类型数组上的mergesort编译此代码时遇到了一些问题。未定义的引用是对的响应
mergesort(hw1type*, int)
以下是相关的代码剪辑,省略了include和不包含的内容,我知道它们都有效:
Main(错误传播到的位置):
hw1type * unsorted_array2 = new hw1type[SIZE];
unsorted_array2 = create_random_hw1type(SIZE);
mergesort(unsorted_array2, SIZE);
mergesort.h:
hw1type* mergesort(hw1type*, int);
hw1type* merge(hw1type*, int, hw1type*, int);
mergesort.cc:
hw1type mergesort(hw1type* unsorted_array, int n)
我看不出函数的声明方式有什么问题,也看不出我在main中传递变量的方式有什么错误。但是,我已经有一段时间没有使用c++了,所以我可以使用第二双或第三双眼睛!
编辑:原来是make文件,我忘了更改。事情总是很简单。
啊,对了,我使用的是其他类附带的标准make文件。不管怎样,这是代码:
我可能应该把mergesort.o列入OBJ的名单,但还有什么吗?make文件如下所示:
CC=gcc
CXX=c++
CFLAGS=-ggdb -O3 -I.
LDFLAGS=-L. -lcs600
OBJ=timer.o random_generator.o sort.o
cs600: libcs600.a main.o
$(CXX) $(CFLAGS) main.o -o hw1 $(LDFLAGS)
libcs600.a: $(OBJ)
ar ru libcs600.a $(OBJ)
ranlib libcs600.a
.cc.o:
$(CXX) -c $(CFLAGS) $<
clean:
@rm -f *.o
@rm -f libcs600.a
@rm -f hw1
我需要在OBJ字段中添加mergesort.o,但除此之外还有什么吗?考虑到C++已经有一段时间了,我真的有一段时期没有处理make文件了。
"未定义引用"是一个链接时间错误。确保包含缺失函数的对象文件是链接命令行的一部分。在你的情况下,可能是这样的:
clang++ -o app main.o mergesort.o
或者简单地说:
clang++ -o app main.cc mergesort.cc
如果你没有先单独编译每个文件。
您没有将mergesort.cc
编译到目标代码中,和/或没有在该目标代码中进行链接。
如果您使用的是IDE,请确保已将mergesort.cc
添加到项目配置中;如果您正在使用Makefiles或在命令行上进行编译,请确保将其包含在正在编译的源文件列表中。
相关文章:
- "error: no matching function for call to"构造函数错误
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- C++ OpenCV 卡尔曼滤波器构造函数错误
- C++:用户定义的显式类型转换函数错误
- C++ 合并字符串以'system'函数错误
- C++ wmain 函数错误时使用 Unicode
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- C++ 中常量属性的初始化构造函数错误
- 线程 std::调用未知类型,无法专门化函数错误
- 表单显示对话框函数错误,并且不执行下面的语句
- 函数错误 C2059:语法错误:'>'不起作用
- STL向量上出现奇怪的复制构造函数错误
- C++ Visual Studio 重载函数错误:没有重载函数的实例与指定的类型匹配
- C++引用已删除函数错误
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- C++ 乘法定义的构造函数错误消息似乎错误
- 在 c++ 代码中将数组传递给函数错误
- FFMPEG avcodec_decode_video2函数错误代码
- 为什么我会收到转换函数错误