开发者网络

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 133|回复: 1

QT和C#在桌面软件开发技术领域的对比和相互调用

[复制链接]

1

主题

2

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2022-9-24 06:07:52 | 显示全部楼层 |阅读模式
谈到QT和C#配合使用,似乎在Windows桌面软件开发这个细分技术领域还真有可能性。
QT和C#开发桌面软件的对比

一般来讲,QT开发桌面应用有传统的QWidgets+QSS这一套, C#也有传统的WinForm这一套;QT还有新一代的QT QML + JavaScript这一套,C#也有新一代的WPF这一套。另外,QT和C#还有一个很大的共同点,两者各自分别是由一家商业公司控制,QT是QT Company,C#是Microsoft。个人认为这两套桌面软件开发框架,技术本质上没有太大的差别。
以下文字中有时所讲的QT可能实际上是QWidgets + QSS,或者QT QML +JavaScript; 所讲的C#可能实际上是WinForm,或者WPF。
QT和C#的技术路线表面上看起来是不同的,但是抛开C++和C#语言层面的差异不说,QT和C#在桌面软件开发这个细分技术领域来讲,底层逻辑都是相通的:为了追求最好的界面渲染性能,最终都是不得不借助GPU的能力。
C#调用QT

C++语言和C#语言开发的应用程序代码之间的配合使用,可以借助于C语言作为中间人。 C++和C#都可以调用C语言动态链接库中的函数。因此可以把QT代码封装到DLL中并导出一些C语言函数,然后给C#调用。
QT调用C#

C#支持开发ATL COM组件,C#代码可以导出ATL COM组件接口,QT中可以调用ATL COM组件,,因此QT可以调用到C#的代码。当然,这个思路也是C/C++代码调用C#代码的常见套路。
调用EXE

前面讨论的都是进程内通过DLL进行调用。如果没法搞成DLL,则可以通过调用EXE创建进程来实现C#和QT应用之间的相互调用。
Windows窗口消息

QT和C#应用程序中都可以创建Windows原生窗口,而且都可以直接调用Windows API,因此可以通过Windows窗口消息实现跨进程通讯。
进程间通信IPC)

QT和C#应用程序都提供了丰富多彩的进程间通信功能,可以实现同一个主机内部的跨进程通讯。另外两者都可以直接调用操作系统原生 IPC API。一般来讲IPC包括mutex、semaphore、event or condition variable,shared memory、pipe等。
网络通讯

QT和C#应用程序都提供了丰富多彩的网络通讯功能,可以实现跨主机的进程间通讯,同样两者都可以直接调用操作系统原生socket API。

综上所述,QT和C#配合使用还是有很多种可能性的。上面讨论的只是目前想到的一些可能性而已。
回复

使用道具 举报

2

主题

4

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2025-4-9 23:39:26 | 显示全部楼层
顶顶更健康
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|开发者网络

GMT+8, 2025-4-19 18:34 , Processed in 0.144185 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表