• 11019阅读
  • 13回复

【提问】关于Qt编程中可调用到的库 [复制链接]

上一主题 下一主题
离线youngki
 
只看楼主 倒序阅读 楼主  发表于: 2005-11-02
在Qt编程中,可以用Qt自身的库,也可以用系统调用,据说还可以调用到C库?

他们之间是什么关系,为什么可以这样呢.     谢谢
[ 此贴被fanyu在2005-11-02 10:02重新编辑 ]
知识和财富,只在流通中产生价值
离线XChinux

只看该作者 1楼 发表于: 2005-11-02
C++中可以用的东西,在Qt z就可以用,因为Qt就是一个C++库库
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线youngki
只看该作者 2楼 发表于: 2005-11-02
那么包含的头文件呢? Qt的库函数我都可以在/src下看到.系统调用和C库的在哪?

还有刚才想试试系统调用,却不知道该包含什么样的头文件,报错函数没有申明.
知识和财富,只在流通中产生价值
离线flyingwind
只看该作者 3楼 发表于: 2005-11-02
是不是和c++编译器有关,因为一般说来qt要在某种具体的c++编译器上编译。
大道泛兮,其可左右!
离线XChinux

只看该作者 4楼 发表于: 2005-11-02
晕啊。
系统默认的头文件位置在/usr/include及其它设置的相关目录下的啊。
默认的库位置在/usr/lib及 其它设置的相关目录下。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线youngki
只看该作者 5楼 发表于: 2005-11-02
Re:关于Qt编程中可调用到的库
这是我不小心犯的错误,/src/kernal,及/src/widget下面可以看到实现代码..主要的是: 你并没有回答我的问题呢
知识和财富,只在流通中产生价值
离线XChinux

只看该作者 6楼 发表于: 2005-11-02
调用某个库中的东西不需要实现代码啊,只需要头文件和库文件。
在你编译和连接的时候,要指定头文件路径以及库文件路径,这些都是在Makefile中写明了的。
在生成Makefile的时候,系统会自动地把相关的环境变量的值加进去(头文件和库文件目录),
如果你调用的库它没有自动包含进去的话,你就需要自己修改环境变量加进去,或者修改.pro文件加进去。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线youngki
只看该作者 7楼 发表于: 2005-11-02
你说的都对,那么如果我想调用系统调用的话我要不要包含什么头文件呢??
如果不需要的话,我该怎么做呢
知识和财富,只在流通中产生价值
离线tdns

只看该作者 8楼 发表于: 2005-11-03
看来你还不大明白编译器这个东西到底是咋回事。
首先,头文件是用来声明的,就是告诉编译器有这个函数或者这个类,至于函数的实现在哪儿,我头文件管不着,可能在.o文件里,也可能在.a或者.so的库里,你编译器在连接的时候按照设置的路径自己找去。而.cpp文件是用来实现的,就是把头文件声明过的函数用代码实现出来,在编译的时候被编译器编译为.o文件。当你的编译完成以后,连接器负责把你的工程里的所有用到的函数,按照设置的查找路径,统统连接到一起,不管这些函数的实现是在标准库里还是在你工程中由.cpp生成的.o文件里。最后生成都是机器码的二进制的可执行程序。
编译和连接是两个步骤,要弄明白。如果调用库函数,编译的时候只用到了库函数的头文件,连接的时候才会用到库。
而上面的头文件、cpp和库之间的关系,是通过makefile来管理的,makefile告诉编译器如何编译工程,到哪里去找头文件和库文件。不管你用什么集成开发环境,到最后都要用这个makefile来编译工程。
以前我们都要自己写makefile,这是件很麻烦的事,但是自从有了qmake工作就轻松多了。Qt里面的qmake就是用来帮助你生成makefile的,写.pro文件要比直接写makefile文件容易多了。
至于Qt里面的uic和moc,这些是预编译器,uic负责将.ui文件转化成.h和.cpp文件,而moc负责将所有含有Q_OBJECT宏的文件翻译成编译器可以编译的.cpp文件,因为Q_OBJECT这个宏编译器不认识,它是Qt自己定义的。最终交给编译器处理的都是编译器能够编译的.h和.cpp文件。
不知道我说明白没有。
离线youngki
只看该作者 9楼 发表于: 2005-11-03
谢谢先,说的很详细.

我刚上手. 以前也不是学计算机的. 可能是我说的不够清晰.

其实我真正想知道的是如何系统调用.比如说在程序中如何调用linux中的mount .

最好有个简单的例子.
[ 此贴被youngki在2005-11-07 18:24重新编辑 ]
知识和财富,只在流通中产生价值
离线youngki
只看该作者 10楼 发表于: 2005-11-07
为什么没人回答阿
知识和财富,只在流通中产生价值
离线tdrhsb
只看该作者 11楼 发表于: 2005-11-07
想进行系统调用,直接include相应的头文件,然后在调用相应的函数啊,没有特别的啊,
例如你要调用system()函数,你先在到system函数的所在的头文件,在usr/include目录下的
#include <head.h>
system(" ls -a ");
这样就可以啦
离线youngki
只看该作者 12楼 发表于: 2005-11-08
谢谢先。大致明白是怎么回事了。

但是以上面的例子来看,include目录下没有head.h文件。

谢谢
知识和财富,只在流通中产生价值
离线youngki
只看该作者 13楼 发表于: 2005-11-08
明白了。我这边是stdlib.h

thx
知识和财富,只在流通中产生价值
快速回复
限100 字节
 
上一个 下一个