赞
踩
开发环境:vs2022、.NET Framework 4.6.1、ABB离线接口库、vs2013、Qt5.8.0
开发语言:C#、C++
不装了,我摊牌了。想要用Qt项目调用C#程序就是为了实现:C++与Qt开发前端交互界面与表层逻辑;C#官方库开发底层逻辑;最终实现ABB机器人离线编程功能。
不能直接建立Qt项目,像普通C++程序调用C#动态库一样的对机器人离线库进行调用。初步判断为Qt框架与clr框架冲突,引发问题包括但不限于按键连接失败,前端界面无效。
解决思路为:先建C#动态库,后建支持clr的C++动态库,再建不支持clr的C++动态库,最后由Qt项目对该库进行引用。经实际验证,确认有效。下文进行详述:
需要建立4个项目,分别称为A、B、C、D。
项目A:vs2022 C#项目:调用官方接口库实现离线功能,包装为类;
项目B:vs2022 C#库项目:封装A项目的类,启用clr使其可被C++项目调用;
项目C:vs2013 C++ Qt库项目:启用clr以引入B项目的动态库,封装新的动态库;
项目D:vs2013 C++ Qt项目:禁用clr后引入C项目的动态库,实现交互界面。
其中,项目A流程可以参考前文:
C# vs2022 + .NET Framework 4.6.1 + ABB 离线接口开发环境配置
项目B流程可以参考前文:
C# vs2022 + .NET Framework 4.6.1 + ABB 离线接口开发库 封装为动态库DLL文件,并由C++项目引用
项目C、D流程可以参考前文:
C++vs2015 + Qt5.9.8 Qt项目封装为动态库DLL文件并引用
C++vs2015 + Qt5.9.8 Qt项目引用多个ui文件组成界面
关于环境版本,主要受限于所调用的三方库的支持范围。就本项目而言,实际测试VS从2022到2013的降版本调用是可行的,推测其他2015、2017 等版本也是有效的。
如果是其他项目使用此方法需要具体测试验证。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。