QT -- 代码封装成库给C调用的问题

记项目中遇到的一个问题。

 

项目任务:

将工业相机的取流、存图、显示、以及图像基本参数调整封装成纯C的库(.dll),给客户使用,那边用的是C,我们这边用C++写的,使用的是QT。

 

遇到的问题:

在QT环境下,将相机取流出来的帧m_Frame与信号槽连接后,就可以自由使用帧(用于显示和存图等),连接代码:

connect(&Camera,&TCamera::SgalSendOriData,this,&Thread_Display::SlotGetFrame);

在线程中直接取全局变量m_Frame做显示即可;做测试也是ok滴;

 

然鹅:

封成库后,用C来调用,线程中则显示没有帧...在线程中多加一句代码来调用一下槽函数获取帧之后,正常运行:

 SlotGetFrame(Camera.GetImgdata());//C里没有信号与槽的机制,所以这里要调用一下槽函数,来获取帧

表明C中(或者是客户用的平台中)是不认可QT的信号槽机制的,只能通过调用函数实现功能。。(个人观点)

 

另外:

测试了信号槽帧原始数据传输效率与调用函数获取帧的效率,信号槽完胜。。

 

posted @ 2021-03-30 15:45  手磨咖啡  阅读(405)  评论(0编辑  收藏  举报