创建一个可移植的、跨平台的、开源的、开箱即用的c++ GUI应用程序
Creating a portable, cross-platform, open-source C++ GUI application that works out of the box?
我一直在寻找如何完成标题中描述的内容。也就是说,我想创建一个c++ GUI应用程序,它:
- 是可移植的(没有安装程序)
- 是跨平台的(Qt解决这个问题)
- 是开源的
- 可以开箱即用(即不需要安装可重新发布的c++)
我在尝试完成这个时遇到了几个问题。我已经把范围缩小到使用Qt而不是使用Visual Studio编译器。让我解释一下。
使用Qt将满足跨平台的要求;它在c++ GUI应用程序方面也广受好评。问题在于可移植性,并且在使用应用程序之前不需要安装大量的依赖包。我的目标是让某人下载一个包含。exe的。zip文件(如果有必要,我愿意包括其他支持文件,例如dll),并且能够提取并运行该exe开箱,而无需做任何其他事情。
这里还有另一个问题:尽管我很想使用Visual Studio(带有Qt Visual Studio插件),但考虑到我的要求,它似乎不可行。这篇文章很好地涵盖了我的问题。简单地说,如果我使用Visual Studio编译器,我需要创建一个安装程序(不再是一个可移植的应用程序),重新发布一些带有应用程序的Microsoft dll(这里可能存在许可和redist问题?),或者将Visual c++库静态地链接到可执行文件中(不赞成这种技术)。
是否有任何方法能够使用Visual Studio并满足上面列出的要求?Visual Studio功能齐全,不容错过。如果这是不可能的,我认为唯一的其他选择将是使用不同的IDE和/或编译器。例如,我可以在MinGW中使用QtCreator,但这样我就会失去一些很棒的VS调试功能。
我的主要问题:
- 有什么方法可以满足上述要求,仍然使用Visual Studio?
- 关于QtCreator不像Visual Studio那样功能齐全,我错了吗?
- 满足申请要求的最佳方式是什么?
我认为您最好的选择是在MinGW环境中使用QT。它允许您创建一个可移植的应用程序,该应用程序本身提供运行时dll,并且具有完全开源的额外好处。QT在线安装程序为您提供了安装完整的MinGW系统的选项,并且它将开箱即用,不需要太多的设置。
你仍然可以使用Visual Studio进行开发;甚至还有一个QT插件(我不确定是否支持VS2015,但如果不支持,应该只需要一些时间)。
QTCreator实际上是一个相当不错的IDE,但它无法与Visual Studio相比。它显然是为了满足QT程序员的需求而优化的,但我发现它有时相当笨拙。如果你的项目很小,它可能是一个可行的选择,但由于Visual Studio 2015 Community基本上是免费的,我会选择它。VS插件仍然会使用QTCreator的GUI编辑器(这真的很好)
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?