c - 为什么在尝试编译 C 文件时出现链接器错误?
问题描述
我已经有这个错误好几个星期了,我已经发了一篇关于它的帖子,但不是很清楚。
所以我从头文件 myBmpGris.h 调用一个函数,这些函数在文件 myBmpGris.c 上实现。这是我的主要文件:
#include<stdio.h>
#include<stdlib.h>
#include "myBmpGris.h"
int main(){
char * image_name = "image_carre.bmp";
BmpImg image = readBmpImage(image_name);
return 0;
我使用编译ggc main.c
并收到此错误消息:
架构 x86_64 的未定义符号:
“_readBmpImage”,引用自:
main-1c453a.o 中的 _main
ld:未找到架构 x86_64
clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
我阅读了很多关于相同错误消息的帖子,但似乎没有一个答案适用于我的情况。我有点绝望,因为我的很多程序都给了我同样的错误。我应该怎么办 ?
解决方案
有两件事。
您已包含的编译。h 文件。这意味着编译器将为包含库中所有使用的函数在符号表中进行条目。
在此处链接链接器尝试从库中获取地址以填充在第一步中创建的符号表。在您的情况下无法执行此操作。所以给出库的完整路径。
推荐阅读
- tensorflow - 在 tf.keras 中使用预训练模型进行预测
- angular - 如何使用providin:角度9中的“平台”
- python - 考虑到不同值的#的python分箱排序
- azure - 无法在 azure media services v3 中使用两个视频对资产进行编码
- ios - SWIFT:当布局具有 ScrollView 和 ImageView 时,横向模式下的约束中断
- python - 熊猫转型真的很慢
- ios - UIViewPropertyAnimator:同时隐藏 TabBar 和 StatusBar (iOS 13)
- mongodb - 即使安装了 Compass,也无法使用 Atlas 连接到 MongoDB Compass
- c - C程序的奇怪输出
- uwp - DataGrid XAML 控件无法通过触摸滚动