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