C语言如何调用库中的函数

弼马温 2014-02-20 08:24:14
我用的环境是windows eclipse mingw
我想调用ffmpeg中的函数
我下载了ffmpeg的sdk,将lib加载到-L,.a文件加载-l下但是没有找到函数
提示信息:

gcc "-IE:\\Cworkspace\\test2\\ffmpeg\\include" -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\test2.o" "..\\src\\test2.c"
gcc "-LE:\\Cworkspace\\test2\\ffmpeg\\lib" -o test2.exe "src\\test2.o" -lavcodec -lavformat -lavutil -lavdevice -lavfilter -lswscale -lpostproc -lswresample
src\test2.o: In function `main':
E:\Cworkspace\test2\Debug/../src/test2.c:19: undefined reference to `av_register_all'
collect2.exe: error: ld returned 1 exit status

什么地方出现错误了?C语言应该如何载入库?
...全文
634 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
gqjjqg 2014-02-26
  • 打赏
  • 举报
回复
引用 7 楼 misakamm 的回复:
gcc "-LE:\\Cworkspace\\test2\\ffmpeg\\lib" 这怎么看着怪怪的,为什么不是 gcc -L"E:\\Cworkspace\\test2\\ffmpeg\\lib"
同样的看法
弼马温 2014-02-25
  • 打赏
  • 举报
回复
引用 22 楼 hxingz 的回复:
请问,你有include头文件吗?
当然有了
angel_su 2014-02-23
  • 打赏
  • 举报
回复
gcc -v可以看看当初编译工具的构建参数。或者,你试试编译参数里加入-m64要求64位输出,如果不支持会有对应的错误提示,只能编32位的...
弼马温 2014-02-22
  • 打赏
  • 举报
回复
谁帮忙看一下
hxingz 2014-02-22
  • 打赏
  • 举报
回复
请问,你有include头文件吗?
大奶兔白糖 2014-02-21
  • 打赏
  • 举报
回复
把库文件的名字加到你链接时候用的库里面。
angel_su 2014-02-21
  • 打赏
  • 举报
回复
引用 13 楼 Smoke_1988 的回复:
开发包是在网上下载的最新开发包
给个地址看看你下的是啥版本...
弼马温 2014-02-21
  • 打赏
  • 举报
回复
引用 12 楼 zhao4zhong1 的回复:
将错误信息中出现的标识符放在google里面搜一下, 看其在哪个.h中,然后在本地硬盘上搜索该.h,如果没有,在网上搜索相关库或模块下载安装,然后将其所在目录填写到“附加包含路径”中,将其.h添加到包含到.c或。cpp中,重新编译; 看其在哪个.lib或库中,然后在本地硬盘上搜索该.lib或.a或.so,如果没有,在网上搜索相关库或模块下载安装,然后将其所在目录填写到“附加依赖库所在目录”中,将其名字添加到“附加依赖库”中,重新连接。
.h文件应该是没有问题的,因为编译器已经能够识别出函数,只是在编译时出现问题。 ffmpeg的库全在lib文件夹下,已经添加到eclipse中了。
弼马温 2014-02-21
  • 打赏
  • 举报
回复
引用 11 楼 angel_su 的回复:
感觉跟编译命令参数关系不大,都已经顺利编译只是链接出错,库名也确实加了。估计开发包版本搞错了...
开发包是在网上下载的最新开发包
赵4老师 2014-02-21
  • 打赏
  • 举报
回复
将错误信息中出现的标识符放在google里面搜一下, 看其在哪个.h中,然后在本地硬盘上搜索该.h,如果没有,在网上搜索相关库或模块下载安装,然后将其所在目录填写到“附加包含路径”中,将其.h添加到包含到.c或。cpp中,重新编译; 看其在哪个.lib或库中,然后在本地硬盘上搜索该.lib或.a或.so,如果没有,在网上搜索相关库或模块下载安装,然后将其所在目录填写到“附加依赖库所在目录”中,将其名字添加到“附加依赖库”中,重新连接。
angel_su 2014-02-21
  • 打赏
  • 举报
回复
感觉跟编译命令参数关系不大,都已经顺利编译只是链接出错,库名也确实加了。估计开发包版本搞错了...
弼马温 2014-02-21
  • 打赏
  • 举报
回复
引用 9 楼 misakamm 的回复:
你自己配错了环境?
该怎么配呢? 我没动过
弼马温 2014-02-21
  • 打赏
  • 举报
回复
引用 19 楼 angel_su 的回复:
你这包是64位的,估计你的mingw是32位的,应该下32位ffmpeg,不能乱套...
怎么看mingw的版本啊?
angel_su 2014-02-21
  • 打赏
  • 举报
回复
你这包是64位的,估计你的mingw是32位的,应该下32位ffmpeg,不能乱套...
弼马温 2014-02-21
  • 打赏
  • 举报
回复
引用 16 楼 bijiaoben 的回复:
把库文件的名字加到你链接时候用的库里面。
链接了啊
弼马温 2014-02-21
  • 打赏
  • 举报
回复
引用 15 楼 angel_su 的回复:
给个地址看看你下的是啥版本...
http://ffmpeg.zeranoe.com/builds/win64/dev/ffmpeg-20140221-git-76dd01e-win64-dev.7z
弼马温 2014-02-20
  • 打赏
  • 举报
回复
引用 2 楼 nadleeh123 的回复:
错误是你自己的好吧,../src/test2.c 未定义的引用 av_register_all
这个意思就是库文件没加载上呗? 怎么加载库文件呢?
弼马温 2014-02-20
  • 打赏
  • 举报
回复
引用 1 楼 turingo 的回复:
参考http://ffmpeg.gusari.org/viewtopic.php?f=8&t=942
I saw this article. But I didn't use makefile. If I don't use it, what should I do? Do I have to use it?
nadleeh 2014-02-20
  • 打赏
  • 举报
回复
引用 楼主 Smoke_1988 的回复:
我用的环境是windows eclipse mingw 我想调用ffmpeg中的函数 我下载了ffmpeg的sdk,将lib加载到-L,.a文件加载-l下但是没有找到函数 提示信息: gcc "-IE:\\Cworkspace\\test2\\ffmpeg\\include" -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\test2.o" "..\\src\\test2.c" gcc "-LE:\\Cworkspace\\test2\\ffmpeg\\lib" -o test2.exe "src\\test2.o" -lavcodec -lavformat -lavutil -lavdevice -lavfilter -lswscale -lpostproc -lswresample src\test2.o: In function `main': E:\Cworkspace\test2\Debug/../src/test2.c:19: undefined reference to `av_register_all' collect2.exe: error: ld returned 1 exit status 什么地方出现错误了?C语言应该如何载入库?
错误是你自己的好吧,../src/test2.c 未定义的引用 av_register_all
  • 打赏
  • 举报
回复
引用 8 楼 Smoke_1988 的回复:
[quote=引用 7 楼 misakamm 的回复:] gcc "-LE:\\Cworkspace\\test2\\ffmpeg\\lib" 这怎么看着怪怪的,为什么不是 gcc -L"E:\\Cworkspace\\test2\\ffmpeg\\lib"
我也不知道,我从eclipse里拷出来的[/quote] 你自己配错了环境?
加载更多回复(5)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧