易截截图软件、单文件、免安装、纯绿色、仅160KB

qt4中如何调用C函数(linux下)

qt默认的编程语言为C++语言。如果你用qt编译.c文件,会出现找不到C语言的默认头文件等错误(如:stdio.h等)。qt中不支持
extern "C"{}的这种写法,我前几天有一个C程序需要移植到Qt的工程中,本希望直接extern "C"就ok了,但发现qt4居然不支持这种写法。我的程序中用到了好几个linux系统头文件,是向串口发指令之类的程序,程序中用到了互斥锁并创建了一个线程。如果再用qt语言来写一遍的话我会挂掉的,所以没有办法,在网上找了半天,终于找到解决方法。
将.c文件编译为函数库的方式在qt下调用,这种方法貌似行得通,我就开始行动了。
下面的内容讲得比较多,比较全,比较适合初学者,是我在网上down的,给出了原网站的链接,最后给出了一个程序。经过自己整理好归纳如下:
需要说明的是:使用gcc可以将程序编译成动态库或者静态库的形式,它们在程序中的调用的方式也不尽相同,给出的程序中调用的是动态连接库。编译成动态的还是静态的根据自己的需要进行。如果原C程序编译的时候需要gcc的额外选项(如 gcc -lpthread -o hello hello.c)等,建议采用动态的形式。
1.什么是静态连接库,什么是动态链接库
         静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。但是若使用 DLL,该 DLL 不必被包含在最终 EXE 文件中,EXE 文件执行时可以“动态”地引用和卸载这个与 EXE 独立的 DLL 文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。在windows和linux上都是相同的,只不过文件的格式不同而已。
http://www.cnblogs.com/winston/archive/2008/07/05/1236273.html
2.gcc生成静态库和动态库
第1步:编辑得到举例的程序--hello.h、hello.c和main.c;
第2步:将hello.c编译成.o文件;
无论静态库,还是动态库,都是由.o文件创建的。因此,我们必须将源程序hello.c通过gcc先编译成.o文件。
在系统提示符下键入以下命令得到hello.o文件。
# gcc -c hello.c
第3步:由.o文件创建静态库;
静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们将创建的静态库名为my


相关文档:

SQLite与C结合

SQLite官方网站例子:
#include <stdio.h>
#include <sqlite3.h>
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
int i;
for(i=0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
i ......

Linux/WinCE C、C++高端课程

—★—培训周期:共950学时  5个月
—★—培训附赠:保证学员人手一机和一套ARM9开发板
—★—培训内容:在项目经理的带领下,通过完成局网的麻将游戏、My ICQ(网络聊天)和发电机在线监控系统,BT下载软件,掌握基于Linux和Windows平台下的C/C++企业级应用的开发技能,掌握大型软件项 ......

LINUX C程序开发每日一题——指针

 
实现一个链表,完成链表的插入,查找,删除
 
typedef struct _FIFO_M{
  void *pdata;
struct _FIFO_M *pNext;
}FIFO_M,* pFIFO_M;
 
typedef struct _FIFO{
pFIFO_M head;
pFIFO_M tail;
pFIFO_M pos;
int mcount;//节点个数
int max_count;//节点最大个数。
}FIFO,* pFIFO;
......

永远神话——C#/C/C++到底还能做什么?

http://blog.csdn.net/tonyxiaohome/archive/2010/04/27/5536367.aspx
我看了以后我也说几句,算我在IT行业打拼一些经验。
 首先这个话题实在是太大了。
C++ 包括C不?
苹果、一些软件 比如Mysql,sqlite 都是模块化为主
基本就是C语言。
 首先我不认同 C++包括C。
这个话题 就有问题。
我们改改看  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号