undefined reference to 函数名

slitaz slitaz 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
直接上问题:
A.c文件里
void * video(){
.....
}

同一个工程里的B.c
extern void *video()
....
pthread_create(&pid,NULL,video,(void *)GTK_WINDOW(win->toplevel));
....

在编译B.c文件时 出现undefined reference to video
collect2: ld returned 1 exit status

因为工程比较大 所以 不能单独拿b.c出来编译
查看


我尝试另建一个小工程 编写个精简的video函数,和在另一个文件中来创建video线程 则能编译通过
可是 我这个相对大的工程当中 为什么就会报错呢?

...全文

相关推荐

undefined reference to `SetPduPowerConsumptionCnt’错误的解决方法

问题:程序模型用C++语言编写,在程序模型和调用函数之间添加了一个接口文件modelc.cpp,用来让用c语言程序调用程序模型中的函数; 新添加了两个函数setPduPowerConsumptionCnt()和setPduPowerConsumptionTot(),用来清除PDU模型中的总功耗和功耗计数器; 编译时出现错误提示: 代码如下:dingq@wd-u1110:~/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket$ make clean;makerm -f *.o pduarm-linux-g++ -g3 -Wall -o0 -I../

weixin_38659527

Dev c++中遇到Id returned 1 exit status编译错误,该怎么办?

Dev c++中遇到Id returned 1 exit status编译错误该怎么办? 其他博主总结的解决方案,包括但不限于 函数名输入错误(如scanf打成scarf、int main()打成int mian()等) 函数体本身问题 上次运行的.exe窗口未关闭 而这次我遇到的问题,是在.h函数中遇到的,上面还写了undefined reference to `WinMain’ 经过摸索尝试,我将红圈右上角的64位Debug换为了32位Debug,问题解决,编译成功 图2(上)换成图3(下)即可 作者:qq_40927676

weixin_38620741

C写的静态库在C++项目里链接失败?含完整编译流程和头文件适配示例

C语言编写的函数封装成静态库libadd.a后,在C++程序test.cpp中调用时出现undefined reference错误,根本原因是C++编译器对函数名做了名称修饰(name mangling),而C库导出的是未经修饰的C风格符号。解决方案是在C头文件func.h中用extern "C"条件包裹函数声明,确保C++编译器按C链接约定处理符号。资源包已包含完整可运行结构:func.c实现加法逻辑,func.h带#ifdef __cplusplus宏判断,test.cpp调用接口,makefile支持一键编译生成目标文件、静态库并链接成可执行文件test,同时提供src/lib/include目录规范布局。所有中间文件(func.o、test.o)和最终产物(test、libadd.a)均已实测通过,直接修改源码即可复现和验证修复效果。

postgres8guard

C++常见错误.docx

。。。

春哥111

C++编译报错解决思路[项目源码]

本文详细介绍了C++编译过程中常见的undefined reference报错问题的解决思路。首先,需要确定找不到的方法属于哪个库或源代码,检查拼写错误或系统库是否存在。其次,通过nm命令确认库中是否包含指定方法。此外,还提到了链接顺序问题,建议使用-Wl,--start-group和-Wl,--end-group解决静态库链接顺序问题。动态库方法是否公开也是常见问题,需检查编译选项是否隐藏。最后,还提到了编译选项兼容性问题,如使用extern "C"包裹FFmpeg头文件以防止名称修饰导致的符号不匹配。文章建议在无法解决问题时,可以借助AI工具进一步排查。

sql99
评论 10
收藏 已收藏
分享
返回顶部
slitaz
C语言 70,039 成员 243,237 内容