gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:10:58 28 4
gpt4 key购买 nike

我在为一组自定义数据类型的归并排序编译这段代码时遇到了一些问题。 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/

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