经提醒,qt可能也有授权问题。我之前一直理解是动态链接就没问题,刚马上搜了一下,情况可能会比较复杂,因为qt使用的协议很多,不同模块有可能不同。
感谢诸位的帮助🙏
准备使用C# + Avalonia,尽可能地使用 aot 编译。
但正如我在留言中提及,私心希望学点新东西,所以自己会学一下 go + wails,希望下次选型能用上。
再次感谢大家。
1
ShadowPower 2023-12-15 12:04:30 +08:00
选 3 ,这玩意非常简单,整体难度大概是 Java Swing 的程度
|
2
Goooooos 2023-12-15 12:07:32 +08:00 via Android
qt 不是不能免费商用吗
|
3
jeeyong 2023-12-15 12:09:19 +08:00
我一直是 python+tkinter 干.
如果对样式有要求, 也有一些基于 tkinter 的花式样式库. 打包的时候别压缩到一个文件. 速度还可以... |
4
Tumblr 2023-12-15 12:10:41 +08:00
hmm 。。。你这 4 个选项相当于只有选项 2 啊。。。
选项 1 涉及授权问题,最主要是领导不喜欢;剩下的 2 个,如果团队没有 C++经验,那完全是给自己挖坑啊,能不能填起来还不敢保证。保险起见,选项 2 是唯一解。 |
5
zsxzy 2023-12-15 12:11:41 +08:00
qt 肯定会找你们要钱的, UI 不复杂用 duilib 就行
|
6
zjsxwc 2023-12-15 12:12:19 +08:00
|
7
rwecho 2023-12-15 12:26:39 +08:00
Wpf 把敏感的逻辑封装下,interop
|
8
tool2d 2023-12-15 12:27:00 +08:00
用 html 写界面,能最大限度去兼容团队成员不同的水平。
只要套一层 electron ,需要计算的地方用 nodejs 去调用 c++模块就可以了。 |
9
rwecho 2023-12-15 12:28:44 +08:00
C#调用 c++,应该是一开始就有的,很多年成熟的技术了
|
10
rwecho 2023-12-15 12:29:29 +08:00
另外可以考虑 wpf+blazor+c++
|
11
shijingshijing 2023-12-15 12:29:30 +08:00
不要选 C#,不好招人,简单的上 PySide 用 Python ,复杂的上 Qt 直接 C++。
|
12
shijingshijing 2023-12-15 12:30:36 +08:00
C#如果做大了,微软也会找你们收钱的啊
|
13
a33291 2023-12-15 12:31:45 +08:00
C#用 SmartAssembly 加密一下就行,完全防破解这几种技术都不好使,只能增加逆向成本
另外直接套一个 webview2 或者 cef,页面用 h5,交互调用 C#直接暴露函数到 js 端也是可以的,现在 ui 部分我更喜欢 h5 实现,简单快捷轮子多 |
14
a33291 2023-12-15 12:32:43 +08:00
@shijingshijing #12 你这说话有点搞笑啊朋友,微软收 u3d 的 C#使用费了?
|
15
JustinL OP @ShadowPower really? 还没试过,但是网上都说很复杂……
|
17
Chad0000 2023-12-15 12:36:08 +08:00
内部使用的话,哪个出活快用哪个。我选的话我会选 2 ,等对外销售的时候再说。市面上破解的软件也不是只能破解 C#的。
|
19
Chad0000 2023-12-15 12:37:27 +08:00
C#+Winform 出活儿更快,所见即所得。就是分辨率适配会有点儿问题,以及后期对界面美化的控制不如 WPF
|
20
JustinL OP @shijingshijing 不同于互联网行业,建筑行业还是很多 C#的
|
21
Dogtler 2023-12-15 12:42:45 +08:00 via iPhone
Flutter……
|
23
acctv2 2023-12-15 12:47:51 +08:00
C#好像是付费的保护方案吧,帮你做混淆的
|
24
ShadowPower 2023-12-15 12:48:10 +08:00
@Goooooos 可以免费商用,用 LGPL 协议的版本
|
25
acctv2 2023-12-15 12:48:25 +08:00
Qt 协议很复杂,而且你们团队还没 C++经验,这就是绝对的隐患了
|
26
yolee599 2023-12-15 12:48:57 +08:00 via Android
Qt 是 LGPL 啊,动态链接应该可以商用吧
|
27
enihcam 2023-12-15 12:49:13 +08:00
听起来就是 C#了。
别听上面胡扯八道:微软永远不会找你收钱,没有公司会这么傻。 |
28
Chad0000 2023-12-15 12:49:45 +08:00
|
30
enihcam 2023-12-15 12:52:06 +08:00
C#支持.net native ,按 release 发布,stripe 所有 symbols ,请问怎么反编译?上面那位满嘴跑火车的来回答一下。
|
31
ShadowPower 2023-12-15 12:52:47 +08:00
@JustinL 网上很多人看到 C++三个字就说难了……
我从 0 学会 Qt 只花了 7 天 |
32
tangmanger 2023-12-15 12:54:31 +08:00
wpf 啊 还用想,,,反编译 可以买商业混淆或者开源混淆
|
33
cnbatch 2023-12-15 12:54:46 +08:00
怕 qt 的授权?那么可以选 wxWidgets ,还可以在 vcpkg 内一键安装
|
34
Chad0000 2023-12-15 12:54:47 +08:00
@ShadowPower #31
要比上手速度,那么我可以说从 0 到学会 Winform 只需要七分钟甚至更少。Winform 的上手风格完全就是现在所谓的低代码平台编辑器的样子。 |
35
jones2000 2023-12-15 12:56:46 +08:00
win32+CEF.
|
36
ShadowPower 2023-12-15 13:00:44 +08:00
@Chad0000 这得综合考虑 OP 的需求,里面还包括反编译难度。如果用 Qt Widgets 的话,界面也可以拖,只是交互方式和 VS 不太一样。
|
37
zogwosh 2023-12-15 13:00:47 +08:00
那你只用 webview 不就好了,win11 不都有吗。用 c 写个兼容层就好了。思路类似于 tauri
|
38
maxxfire 2023-12-15 13:07:58 +08:00
electron ,虽然它有点臃肿,有点前端娱乐。但它有网络互联的基因,天生的标准。
|
39
shijingshijing 2023-12-15 13:12:49 +08:00
|
40
loophole12 2023-12-15 13:17:16 +08:00 via Android 1
不是内部工程师用吗,为什么要担心被反编译?
|
41
buxudashi 2023-12-15 13:18:04 +08:00
aardio,tarui,flutter. c#
|
42
0o0O0o0O0o 2023-12-15 13:19:48 +08:00 via iPhone
如果担心被反编译的话,不是靠选语言选框架就行的,也不是靠#30 那样改改编译选项就可以的,建议挑选过程中把商业化保护方案考虑在其中
|
43
JustinL OP @loophole12 不同部门,而且普通工程师也是有可能给其他公司的工程师用的
|
44
Chad0000 2023-12-15 13:22:14 +08:00
@shijingshijing #39
OP 使用免费的 Visual Studio Community 版开发呢?就算 OP 公司发财了要买,VS Pro $499 是买不起么?其他免费方式我没搞过因为我个人使用 Community 版,公司给买的 Pro (还附带 Azure 每月大几十刀体验额度,快白给了),不需要考虑其他方案。 |
45
shijingshijing 2023-12-15 13:28:25 +08:00
@Chad0000 我没记错的话 Community 还有以前的 Express 版本,是无法开发和编译 Winform 的,WPF 的我不知道。
|
46
shijingshijing 2023-12-15 13:32:40 +08:00
#45 错了,Community 不确定,Express 我确定是无法使用 Form Designer 来直接拖拽控件开发的。
|
47
Chad0000 2023-12-15 13:33:29 +08:00
@shijingshijing
我开发 Winform 和 WPF 好多年,虽然这几年大部分搞 Web 了但 Community 无法开发 Winform 是头次听说。你最好不要乱说,Community 只是没有高级的一些调试和监控功能而已(说实话我用 Pro 也用不到这些高级功能)。 |
48
0n2ynu 2023-12-15 13:41:18 +08:00
windows 桌面开发, C#毫无疑问
|
50
ysc3839 2023-12-15 13:42:29 +08:00 via Android
没有好的选择,要防止反编译的话个人还是会选择 C++。
具体得看搞什么功能,用 Win32 写起来可能很麻烦。MFC 也许能省一点事,但是也是淘汰的技术,个人不推荐使用。 还可以考虑 WinUI ,但是系统至少要 Win10 1903 。WinUI 有个“分支”是 React Native ,界面逻辑用 js 写,底层界面库还是用 WinUI ,同时也可以用 C++写功能暴露给 js 调用。 也可以考虑 C++ + WebView ,但前端部分感觉很容易被反编译。 不建议 C# + C++,你用 C++写的都是做成 DLL 给 C#调用,那别人完全可以把你的 DLL 弄过去换壳直接使用。 |
53
Dorian101 2023-12-15 13:46:51 +08:00
@shijingshijing .NET 的所有方面都是开放源代码,包括类库、运行时、编译器、语言、ASP.NET Core Web 框架、Windows 桌面框架以及 Entity Framework Core 数据访问库等。
|
54
xieren58 2023-12-15 13:48:09 +08:00
|
55
JustinL OP @ysc3839 楼上确实很多人建议套 web 做界面。另外说到 C#调用 C++ dll 的问题,可不可以在 dll 里面做一些鉴权的措施?例如在公司网络下才能以调用?
|
56
Chad0000 2023-12-15 13:51:09 +08:00
OP 这么关心反编译,直接找相关技术是否有付费的方案,价格多少就行了。免费的又不能保证还得自己研究,如果付费的可负担还浪费啥。
|
58
majianglin 2023-12-15 13:58:34 +08:00
我推荐 Electron ,web 前端开发人员上手太快了,JS 编译后很难反编译的
也可以用 C++开发 NodeJS 插件来做加密鉴权和密集计算模块 |
59
ggvoking 2023-12-15 14:07:34 +08:00
没看懂这么多人推荐 Electron ,话说如果本来就是 C#技术栈,那 wpf 肯定是最佳选择。
|
60
elechi 2023-12-15 14:11:37 +08:00
WPF 加个 MVVM
|
61
jeeyong 2023-12-15 14:15:34 +08:00
@JustinL 我一直理解的是 nuitka 是转义一次然后打包? 还真没太在意源码的问题. 我交付的时候源码都是直接给的.哈哈
|
62
Mithril 2023-12-15 14:17:22 +08:00
C# + WebView2 ,前端一套写界面,后端直接就是个 webserver 。
这是前后端开发都最简单的方案。 至于加密和破解,这就是个成本问题。如果你只想上个难度,那代码混淆也就够了。非要硬搞的话就上基于虚拟机的解决方案,但个人觉得压根没必要。你一个行业内部软件,除非做得特别好,别人不用不行,或者技术独特,算法非常好。不然没那么多人闲的去反编译的。 然而算法你最好用专利保护,光靠代码也是防不住的。 |
63
sunmker 2023-12-15 14:22:41 +08:00
用 C#的 winform ,更快
|
64
vvvvvvvv 2023-12-15 14:28:38 +08:00
有个神奇的东西叫做 aardio
|
65
j519 2023-12-15 14:30:17 +08:00
选简单的。
|
66
rwecho 2023-12-15 14:34:18 +08:00
|
67
afirefish 2023-12-15 14:35:37 +08:00
C# + Avalonia 。C# native 调用 C++代码非常方便,也莫得啥性能损失。
别听上面人瞎 jb 扯淡。C#免费,开源。而且技术栈非常完善。 |
68
afirefish 2023-12-15 14:36:19 +08:00
@shijingshijing 不知道可以不说。造谣可就违法了~
|
69
xieren58 2023-12-15 14:36:22 +08:00
@JustinL 前段时间用 avalonia 做完一个项目, 比 wpf 爽... .net 8 可以 aot, 难以反编译, 如果不用 net 8 , 核心点还可以用 rust 写 dll, 有相关的库 uniffi-bindgen-cs, 没办法反编译... 我那项目就是 avalonia + rust , 核心点用 rust 写, 速度快, 又不怕反编译...
|
70
xieren58 2023-12-15 14:37:25 +08:00
@JustinL 对了, 原来那项目是 wpf + webview2, 改成了现在的 avalonia + rust...
|
71
rwecho 2023-12-15 14:39:10 +08:00
|
73
keymao 2023-12-15 14:42:10 +08:00
electron+cpp 核心模块 免费 无商用风险
|
74
avalon8 2023-12-15 14:44:36 +08:00
electron 套壳
|
75
sunzhuo 2023-12-15 14:45:45 +08:00
什么算法?有没有现成的库?
|
76
c2const 2023-12-15 14:46:42 +08:00
团队没 C++经验,那 1 、3 、4 可以直接放弃,直接选 2 :)
--------------------- 至于 C#的反调试和反逆向,不要自己做、也不要用免费的,用付费方案挡住大部分人即可 :) 最好是把核心功能放在服务器上,即使破解本地软件也用不了 :) |
78
andytao 2023-12-15 14:50:40 +08:00
还有如下解决方案:
1 、Flutter + Dart ,现在手机上用的都是它,它也能开发桌面版; 2 、GTK + Vala ,用 C# 的原生版开发原生桌面程序,技术很成熟,也能开发大型应用; 大型 GTK 应用 [袋鼠数据库工具] 用的就是这套方案。 |
79
andytao 2023-12-15 14:55:46 +08:00
袋鼠工具相关界面可以从这里看到:
https://github.com/dbkangaroo/kangaroo |
80
dhssingle 2023-12-15 14:59:28 +08:00
Avalonia
|
81
idealhs 2023-12-15 15:01:39 +08:00
没什么好说的必选 WPF ,担心反编译 WPF 纯 UI ,C++写业务。
|
82
xingjue 2023-12-15 15:04:29 +08:00
用 golang 的 wails https://github.com/tiny-craft/tiny-rdm 这个就是 wails 写的
|
83
snailya 2023-12-15 15:05:58 +08:00 2
好多公司明明没啥核心技术,却天天担心泄密了。我说的就是我们公司。
|
85
SWALLOWW 2023-12-15 15:20:19 +08:00
wpf 一把唆,最后不都混淆的吗,可提供远程协助
|
86
kriko 2023-12-15 15:23:09 +08:00
用 unity 游戏引擎做
|
87
shermie 2023-12-15 15:23:27 +08:00
上面所有的答案 我觉得都不是最好的 最好的是炫彩 gui http://www.xcgui.com/ 自带设计器生成的是 xml 使用语言加载就可以 你可以搜一下 所有语言都能用 只要能调用 dll
|
89
ysc3839 2023-12-15 15:30:14 +08:00 via Android 1
@JustinL 当然可以,但是 DLL 仍然是把相关逻辑直接暴露在外了。
要比喻的话,DLL 就像把房门直接对着外面,虽然门本身有锁,但还是比较薄弱。exe 静态链接的话,就像门外面还有个大院子,要破解得先在院子里绕个半天找到门才行。 |
90
NoobNoob030 2023-12-15 15:33:17 +08:00
2 或者 electron
|
91
hahahabro 2023-12-15 15:38:05 +08:00
@shijingshijing 胡说八道什么
|
93
anyele 2023-12-15 15:48:45 +08:00
windows 桌面开发, C# WPF 毫无疑问
|
94
runliuv 2023-12-15 15:55:38 +08:00
windows 桌面开发, C# WinForm 或 WPF ,毫无疑问。
怕反编译,找免费的混淆工具或购买 dnguard 等混淆工具。 |
95
hatsuyuki 2023-12-15 16:02:48 +08:00
flutter desktop
|
96
shuax 2023-12-15 16:04:43 +08:00
我来推荐一个 Flutter ,写个界面轻轻松松
|
98
xuanbg 2023-12-15 16:25:44 +08:00
|
99
liyafe1997 2023-12-15 16:27:49 +08:00
@Goooooos Qt 你只要不修改它的库,用它的 dll 动态链接,并且在程序中声明使用了 Qt 就没问题,完全符合 LGPL 协议。
|
100
nodejsexpress 2023-12-15 16:31:25 +08:00
那么快担心反编译,就是多余的。
哪天内部觉得这个软件不好用或者没有价值,就砍掉了。 出活快,就 python ,qt |