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的信号槽机制的,只能通过调用函数实现功能。。(个人观点)
另外:
测试了信号槽帧原始数据传输效率与调用函数获取帧的效率,信号槽完胜。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!