一个编译错误,帮忙看看!

嗨皮 2009-04-20 10:46:16
print.c

#include <cups/cups.h>
#include "print.h"

int printjob()
{
cups_dest_t *dest;
int num_options;
cups_option_t *options;
int job_id;

job_id = cupsPrintFile(dest->name, "/mnt/test.ps", "test print", num_options, options);

return 0;
}


print.h
   
#ifndef PRINT_H
#define PRINT_H

int printjob();

#endif


do.c

#include "print.c"

int main()
{
return printjob();
}



编译错误如下:
gcc -o test do.o print.o `cups-config --cflags --libs`
print.o: In function `printjob':
print.c:(.text+0x0): multiple definition of `printjob'
do.o:do.c:(.text+0x0): first defined here
collect2: ld returned 1 exit status
make: *** [all] Error 1
...全文
95 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
嗨皮 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 long33long 的回复:]
引用 9 楼 WOBUGUAN 的回复:
你的Makefile写得不太对:
all: do.o print.o
gcc -o test do.o print.o `cups-config --cflags --libs`
do.o:do.c
gcc -c do.c
print.o:print.c
gcc -c print.c



谢谢,这个错误我以后会改正的。
今天结贴太快,没来得及给分,见谅啊!
[/Quote]
原来给过了,哈哈,再次谢谢你
嗨皮 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 WOBUGUAN 的回复:]
你的Makefile写得不太对:
all: do.o print.o
gcc -o test do.o print.o `cups-config --cflags --libs`
do.o:do.c
gcc -c do.c
print.o:print.c
gcc -c print.c

[/Quote]

谢谢,这个错误我以后会改正的。
今天结贴太快,没来得及给分,见谅啊!
WOBUGUAN 2009-04-20
  • 打赏
  • 举报
回复
你的Makefile写得不太对:
all: do.o print.o
gcc -o test do.o print.o `cups-config --cflags --libs`
do.o: do.c
gcc -c do.c
print.o: print.c
gcc -c print.c
嗨皮 2009-04-20
  • 打赏
  • 举报
回复
找到问题了。谢谢大家!
嗨皮 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 WOBUGUAN 的回复:]
你把命令行也改下:
gcc -o test do.o print.o `cups-config --cflags --libs`
改成:
gcc -o testdo.c print.c`cups-config --cflags --libs`
[/Quote]

我简单写了个Makefile,如下:
all: do.o print.o
gcc -o test do.o print.o `cups-config --cflags --libs`
do.o:
gcc -c do.c
print.o:
gcc -c print.c
WOBUGUAN 2009-04-20
  • 打赏
  • 举报
回复
你把命令行也改下:
gcc -o test do.o print.o `cups-config --cflags --libs`
改成:
gcc -o test do.c print.c `cups-config --cflags --libs`
嗨皮 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Loaden 的回复:]
int printjob()
{
....
return 0;
}

改成:
static int printjob()
{
....
return 0;
}
[/Quote]
谢谢回复,但是问题还是一样
wwoo_1105 2009-04-20
  • 打赏
  • 举报
回复
#include "print.h"
嗨皮 2009-04-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tian428 的回复:]
printjob重复定义
do.c 里
#include "print.c"
改成
#include "print.h"

[/Quote]

这个是个笔误,错误依旧。
老邓 2009-04-20
  • 打赏
  • 举报
回复
int printjob()
{
....
return 0;
}

改成:
static int printjob()
{
....
return 0;
}
tian428 2009-04-20
  • 打赏
  • 举报
回复
printjob重复定义
do.c 里
#include "print.c"
改成
#include "print.h"

69,373

社区成员

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

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