QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1572|回复: 8

求助:Qt中自己用C写的函数在编译时找不到

[复制链接]
发表于 2004-5-13 11:15:25 | 显示全部楼层 |阅读模式
小弟初学linux,还望各位大侠帮忙。我自己写了一个词典操作的函数库,是用C写的,我想用Qt来作界面,但是作好了界面之后,我在main()里面调用自己的函数,为什么编译通不过,报告错误说我自己写的那些函数未定义,我已经在main.cpp里包含了那些头文件,而且也没有报告说头文件找不到,为什么会出现这种情况呢?哪位大侠知道,一定要帮帮小弟啊
发表于 2004-5-13 11:21:34 | 显示全部楼层
紧紧包含头文件还不行,要把你写的那部分链接进程序才行呀
回复

使用道具 举报

发表于 2004-5-13 12:00:57 | 显示全部楼层
我从来没有把makefile做成功过。       
即使跟书上一样的也不行。       
回复

使用道具 举报

发表于 2004-5-13 12:17:33 | 显示全部楼层
8个空格和tab不是一回事
-I来指定头文件目录。
回复

使用道具 举报

 楼主| 发表于 2004-5-13 19:25:32 | 显示全部楼层
可是我在Qt Designer里面已经把它们加入工程文件了,难道这样不行,还要自己写Makefile吗?我看了Makefile,好像已经有了把它们编译进去的代码了。而且我也试着用命令行的方式编译,也是不行。--_-- ! 版主来教教我怎样链接吧!我就差这么点了
回复

使用道具 举报

发表于 2004-5-13 20:33:03 | 显示全部楼层
extern "C"
{
你定义的函数
}

这样试试
回复

使用道具 举报

 楼主| 发表于 2004-5-13 22:21:20 | 显示全部楼层
斑竹果真是厉害啊!!!    我把我自己写的函数库的头文件用extern "C"包括了,就可以编译通过了,真是谢谢,谢谢了。不过版竹如果有时间能不能再解释一下是为什么?是不是GCC 和 G++编译出来的.obj文件中函数名称有些不同呢?需要额外的标志才能正确连接???如果没时间也没关系,我再去找找看。Anyway ,thanks very much!!!唉,刚学用Linux编程,问题真是多多,以前写C和C++习惯用TC++,用GUN C就出了很多问题,以前在TC下是都不会遇到的。不晓得是怎么回事儿。对了,我还有个问题,不如我再发个帖子,版竹也再帮帮忙啊。这里真是个好地方,我也把她介绍给我的同学了,大家一起支持我们这个家!
回复

使用道具 举报

发表于 2004-5-14 09:40:44 | 显示全部楼层
extern "C"是将{}内的代码按c语言标准编译
如果将c按c++编译,实际的函数名会被改变的,所以链接的时候找不到
你可以这样试试
//test.c
test() {}
g++ -c test.c

然后编辑test.o,你会发现函数名不是test而是xxtestyy
但如果加上extern "C"就是test了
回复

使用道具 举报

 楼主| 发表于 2004-5-14 16:23:51 | 显示全部楼层
O?!果真如此。。。唉,真是。。。为什么自己不知道该怎么解决呢?
还要好好学习啊。。。

再谢谢mozilla兄了,呵呵。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 09:11 , Processed in 0.041992 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表