首页 > 解决方案 > 如何解决在 Visual Studio Code 中运行 C 的未定义引用错误?

问题描述

我已经尝试逐个阅读线程,但我似乎无法弄清楚为什么我的 main.c 无法从位于同一存储库中的另一个名为 deq.c 的文件中引用任何内容。我将附上下面的 makefile 代码以及错误消息

在我的 main.c 文件中,我试图引用文件 deq.c 中名为 deq_new() 的方法。此方法已经创建并完全实施。

尝试运行我的主文件时收到的错误消息指出: “C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../ ../x86_64-w64-mingw32/bin/ld.exe: C:\Users\MKyle\AppData\Local\Temp\cck9V669.o:main.c:(.text+0x5f): undefined reference to `deq_new' collect2 .exe:错误:ld 返回 1 个退出状态”

这是我的教授提供的 GNUmakefile。 生成文件图像

Deq_new() 方法的代码位于“deq.c”文件中,该文件包含在 main.c 中,使用顶部的#INCLUDE“deq.c”语句。

正确引用了方法和文件,并且我的 makefile 或单击运行后第一次尝试编译时一定有问题。如果有人对可能导致 main.c 无法识别存储库中其他文件的方法有任何想法,我将不胜感激!

main.c代码如下: main.c文件图片

标签: c

解决方案


您在谈论 deq.c,但生成文件引用 libdec.so。

我猜你在过去的某个时候已经编译了 libdec.so 或者得到了它,改变了它并期望 makefile 编译它。它没有。

缺少一些信息,但从您的输入中我可以猜到,您的选择是:

  • 使用新函数将 dec.c 重新编译为 libdec.so
  • 将 dec.c 编译成可执行文件,而无需将其转换为共享对象

一个简单的命令,您可以使用它来查看是否可以一起编译:

gcc main.c dec.c -o my_main

推荐阅读