c - 如何解决在 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文件图片
解决方案
您在谈论 deq.c,但生成文件引用 libdec.so。
我猜你在过去的某个时候已经编译了 libdec.so 或者得到了它,改变了它并期望 makefile 编译它。它没有。
缺少一些信息,但从您的输入中我可以猜到,您的选择是:
- 使用新函数将 dec.c 重新编译为 libdec.so
- 将 dec.c 编译成可执行文件,而无需将其转换为共享对象
一个简单的命令,您可以使用它来查看是否可以一起编译:
gcc main.c dec.c -o my_main
推荐阅读
- c# - 可以依赖自动属性支持字段名称吗?
- docker - Docker:为容器创建多个名称
- python - 手写数字识别AI模型的错误轮廓和错误输出
- python - 如何生成包含 10 个随机数列表的文件,对它们进行排序并写入新文件
- locust - 我如何实现一个 locustfile,其中每个 locust 从 csv 文件中获取唯一值来完成它的任务?
- javascript - 从文本输入表单生成样式化的 JSX?
- ethereum - 使用solidity ecrecover验证TRON地址
- python - 连接到 AWS Athena 时从 pandas read_sql() 方法捕获异常
- firebase - Flutter & Cloud-Firestore:如何阅读链接到 Flutter FutureBuilder 的 Firestore 文档
- java - Spring Boot 中的 Stripe 示例 java 服务器?不兼容的类型:可选
无法转换为源