qt 与c程序通信问题

lishi_1991 2013-01-16 05:40:24
我用qProcess 启动了一个外部c程序 这个c程序是录像的,现在需要c程序将采集的buf传给qt程序 用qt程序来实现实时截图功能 不知道各位大牛们有什么好的实现办法没!怎么才能把c程序的buf传给qt呢
...全文
453 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sddzycnqjn 2013-07-18
  • 打赏
  • 举报
回复
引用 9 楼 zhou19891113 的回复:
第一步:把接口编译成静态库,或者动态库,或者最简单的之间编译成obj文件, 第二步:把接口的声明的头文件和接口的库文件拷贝到QT工程中,最好单独建立一个文件夹, 第三步:在使用接口的地方include该头文件,然后就可以使用了 注意事项:1.QT是C++代码,所以引入C语言的接口时,头文件应该有这样的形式:

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

...

#ifdef __cplusplus
}
#endif // __cplusplus

2.在QT工程配置文件下,要添加自己编译的接口的库的路径,否则链接的时候会报错。
健齿虎,你太帅了。之前的问题把我卡死了。我就先放下然后做其它的事情了。现在回过头来用你的方法果然弄出来了。非常感谢啊。
sddzycnqjn 2013-06-25
  • 打赏
  • 举报
回复
引用 4 楼 zhou19891113 的回复:
C语言编一个接口函数提供给QT程序调用就行了。
这位朋友,C语言编写好的接口函数怎么给QT程序用呢?extern "C" ? 我尝试过很多方法。本来我编译的程序没有错误。QT中调用的话,就总是编译不过。能指点一下吗?
Ericz 2013-06-25
  • 打赏
  • 举报
回复
看第9楼
引用 8 楼 sddzycnqjn 的回复:
[quote=引用 4 楼 zhou19891113 的回复:] C语言编一个接口函数提供给QT程序调用就行了。
这位朋友,C语言编写好的接口函数怎么给QT程序用呢?extern "C" ? 我尝试过很多方法。本来我编译的程序没有错误。QT中调用的话,就总是编译不过。能指点一下吗?[/quote]
Ericz 2013-06-25
  • 打赏
  • 举报
回复
第一步:把接口编译成静态库,或者动态库,或者最简单的之间编译成obj文件, 第二步:把接口的声明的头文件和接口的库文件拷贝到QT工程中,最好单独建立一个文件夹, 第三步:在使用接口的地方include该头文件,然后就可以使用了 注意事项:1.QT是C++代码,所以引入C语言的接口时,头文件应该有这样的形式:

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

...

#ifdef __cplusplus
}
#endif // __cplusplus

2.在QT工程配置文件下,要添加自己编译的接口的库的路径,否则链接的时候会报错。
__阿飞__ 2013-01-21
  • 打赏
  • 举报
回复
我只能大致给你下思路了: 首先在C语言里面定义一个消息队列,然后发送消息. 定义:
key=ftok(IPC_KEY_PATH, DISP_BLDC_MSG_PROJ_ID);//建立ipc通信
	if(key==-1)
	{
		perror("comm_if:cannot generate IPC key");
		exit(1);
	}
	DPRINTF("proj_id %d key %d\n",DISP_BLDC_MSG_PROJ_ID,key);
	msqid=msgget(key,IPC_CREAT|0777);
	if(msqid == -1)
	{
		perror("comm_if:cannot create message queue");
		exit(1);
	}
以上是定义,定义之后,便可以发送消息了:
msgsnd(msqid, &msg_info, (sizeof(bldc_msg_t) - sizeof(long)),0);
如上是发送消息,那么在Qt这边的代码里,可以创建一个线程类,线程run起来之后,使用一个while循环,监听从串口传过来的消息:

void msgthread::run() {
    while(1) {
        if((n = msgrcv(mid,&msg,(sizeof(bldc_msg_t)-sizeof(long)),BLDC_DISP_MSG_TYPE,IPC_NOWAIT)) != -1 ) {
              .............处理函数.........
            }
    }
}
引用 6 楼 lishi_1991 的回复:
大神啊 那你现在还有qt用消息队列跟c通信的例子吗 学学!谢谢了 引用 5 楼 yuan8222 的回复:消息队列?我用过消息队列来在Qt跟C之间通信.
Ericz 2013-01-18
  • 打赏
  • 举报
回复
C语言编一个接口函数提供给QT程序调用就行了。
lishi_1991 2013-01-18
  • 打赏
  • 举报
回复
大神啊 那你现在还有qt用消息队列跟c通信的例子吗 学学!谢谢了
引用 5 楼 yuan8222 的回复:
消息队列?我用过消息队列来在Qt跟C之间通信.
__阿飞__ 2013-01-18
  • 打赏
  • 举报
回复
消息队列?我用过消息队列来在Qt跟C之间通信.
polly_polly 2013-01-17
  • 打赏
  • 举报
回复
最简单的,socket
moxiaofeng77 2013-01-17
  • 打赏
  • 举报
回复
socket通信,Linux下还可以使用dbus
乔巴好萌 2013-01-16
  • 打赏
  • 举报
回复
socket通信

16,815

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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