C++ "undefined reference to"函数错误

标签 c++ undefined

我在为一组自定义数据类型的归并排序编译这段代码时遇到了一些问题。 undefined reference 是对

的回应
mergesort(hw1type*, int)

这里是相关的代码片段,省略了包含,以及我知道的所有工作之外的内容:

主要(错误传播到的地方):

hw1type * unsorted_array2 = new hw1type[SIZE];

unsorted_array2 = create_random_hw1type(SIZE);

mergesort(unsorted_array2, SIZE);

合并排序.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 列表中,但还有别的吗?生成文件如下所示:

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

我需要将 mergesort.o 添加到 OBJ 字段,但除此之外还有什么?考虑到 C++ 已经有一段时间了,自从我弄乱 make 文件以来真的有一段时间了。

最佳答案

“ undefined reference ”是链接时错误。确保包含缺失函数的目标文件是链接命令行的一部分。在你的情况下,可能是这样的:

clang++ -o app main.o mergesort.o

或者简单地说:

clang++ -o app main.cc mergesort.cc

如果您没有先单独编译每个文件。

关于C++ "undefined reference to"函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9087731/

相关文章:

c++ - 我已经编写了 C++ 代码来将 boost::optional 视为一个范围,但它无法编译

javascript - 为什么我不能将 undefined 分配给 window.load?

qt - undefined reference qt opencv

c++ - OpenGL 帧缓冲区 - 渲染到纹理创建具有主帧缓冲区内容的纹理

c++ - 不等于 (!=) 运算符无法在 C++ 中正确使用 char

c++ - 使用 openMP 进行并行编程

c++ - 在编译时检测或避免对临时文件的无效引用

php - undefined variable 和联系表格php中的错误

PHP fatal error : Call to undefined function?

jquery - this.setState() 不是一个函数 -> 当尝试保存状态响应时