求助,关于write_jpeg问题

听海拉拉 2010-08-12 02:52:41
/* 涓嬮潰鏄竴涓畬鏁寸殑绋嬪簭 test.c
* gcc test.c -o test -ljpeg
*/

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <errno.h>
#include <linux/videodev.h>

#include <jpeglib.h>


#define WIDTH 320
#define HEIGHT 240
#define V4L_DEVICE "/dev/video0"




int main()
{

unsigned char* buf;
int i,j;
int fd;
int re;

struct video_capability vcap;
struct video_channel vc;
struct video_mbuf mbuf;
struct video_mmap mm;

fd = open(V4L_DEVICE, O_RDWR);
if(fd<=0)
{
perror("open");
exit(1);
}

if(ioctl(fd, VIDIOCGCAP, &vcap)<0)
{
perror("VIDIOCGCAP");
exit(1);
}

fprintf(stderr,"Video Capture Device Name : %s\n",vcap.name);

for(i=0;i<vcap.channels;i++)
{
vc.channel = i;
if(ioctl(fd, VIDIOCGCHAN, &vc)<0)
{
perror("VIDIOCGCHAN");
exit(1);
}

fprintf(stderr,"Video Source (%d) Name : %s\n",i, vc.name);
}

vc.channel =1;
vc.norm=1;

if(ioctl(fd, VIDIOCSCHAN, &vc) < 0)
{
perror("VIDIOCSCHAN");
exit(1);
}

if(ioctl(fd, VIDIOCGMBUF, &mbuf) < 0)
{
perror("VIDIOCGMBUF");
exit(1);
}
else
{
perror("henhao");
}
fprintf(stderr,"the frames number is %d\n",mbuf.frames);

buf = (unsigned char*)mmap(0, mbuf.size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
if((int)buf < 0)
{
perror("mmap");
exit(1);
}
mm.frame = 0;
mm.height = HEIGHT;
mm.width = WIDTH;
mm.format = VIDEO_PALETTE_RGB24;

if(ioctl(fd, VIDIOCMCAPTURE, &mm)<0)
{
perror("VIDIOCMCAPTURE");
exit(1);
}

if(ioctl(fd, VIDIOCSYNC, &mm.frame)<0)
{
perror("VIDIOCSYNC");
exit(1);
}

if(-1 == (write_jpeg("./pic001.jpeg",buf,75,WIDTH,HEIGHT,0)))
{
printf("write_jpeg error\n");
exit(1);
}

munmap(buf,mbuf.size);
close(fd);
}
怎么找不到write_jpeg?
acer@ubuntu:~$ gcc test.c -o test -ljpeg
/tmp/ccIvsg0u.o: In function `main':
test.c:(.text+0x352): undefined reference to `write_jpeg'
collect2: ld returned 1 exit status


...全文
137 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
听海拉拉 2010-08-17
  • 打赏
  • 举报
回复
有相近的源码吗,能在ubuntu下运行的
山椒π 2010-08-17
  • 打赏
  • 举报
回复
这个一般和那个系统无关,只是可能写这个函数的时间比较早有些库的版本和它不适应了,要修改下其中调用库函数的地方。
山椒π 2010-08-12
  • 打赏
  • 举报
回复
应该不是

你这个例子是哪儿得到的,少了那个函数的实现

http://blog.chinaunix.net/u2/70445/showart_2015207.html

这里有你缺少的函数,加入试试
谭海燕 2010-08-12
  • 打赏
  • 举报
回复
-ljpeg没有起到作用。

设置下libjpeg库的路径。或者你直接把该库文件拷贝到lib下面。

再试试

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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