创建在大多数PC上运行的C++程序

creating C++ program that runs on most of PCs

本文关键字:C++ 程序 运行 大多数 PC 创建      更新时间:2023-10-16

我有一个项目需要为小型可执行文件编写代码。我使用visual C++express 2010 IDE创建了这个文件。在我写完代码后,我试图将它复制到几台不同的电脑上。每次我点击这个文件执行它时,它都会给我一条错误消息。消息中说我必须安装(.NET framework)。我在YouTube上看了几个视频,解释了如何通过将运行库从多线程调试DLL(/MDd)更改为多线程调试(/Mtd)来克服这个问题。然而IDE无法调试C++代码,因为当我使用CLR模板创建项目时!有什么办法解决这个问题吗?一旦我在不同的电脑上使用,我可以创建一个类似的程序吗?

学习JAVA或C#这样的不同语言是否有助于创建在大多数Window平台机器上运行的小程序(比如我的程序)?

只需使用Qt-它运行在Windows、Linux、MacOS上,计划今年支持Android和iOS,此外它还支持嵌入式平台和一些更模糊的移动平台。此外,对Windows RT的支持刚刚启动。一个完整的图书馆,拥有大量的功能、良好的文档和大量的教育资源。它提供了大量的工具,从隐式共享容器到线程、信号和插槽、2D和3D图形、小工具、多媒体、传感器。。。等等。。。

您甚至可以在LGPL许可证下开发商业应用程序。

还附带了一个非常好的IDE-QtCreator。

您可以开发标准C++应用程序或使用QML,QML是一种类似JavaScript的标记和脚本语言,用于从C++实现的组件构建应用程序。您还可以扩展QML。使用QML进行开发要快得多,而且您仍然可以获得平台原生二进制的优势。

请注意,您仍然需要随应用程序附带一些DLL。当然,除非你使用静态构建,这需要你的应用程序是开源的,或者购买商业许可证。。。它不便宜。。。

但是,几MB的DLL仍然比整个DLL要好得多。NET框架。静态构建将生成大约8-9 MB的可执行文件,没有外部依赖关系。

坚持C++标准,避免Microsoft扩展(托管代码),只调用操作系统的POSIX函数,那么你应该能够编写可移植程序。

您似乎创建了一个Managed C++ Project。相反,创建一个空的Win32 C++ project,然后添加.cpp/.h文件。这将限制您使用所有具有C++运行时的PC上可用的默认库。如果您也想删除该依赖项,那么在运行时使用/MT选项进行静态编译。详细信息@http://msdn.microsoft.com/en-us/library/2kzt1wy3(v=vs.71).aspx

当你继续前进时,你需要意识到你依赖什么库,这些库在什么版本的操作系统上可用,或者你是否需要将它们与你的位打包。

Java和C#都将有助于制作可移植程序。然而,通常情况下,人们必须为用这两种语言编写的可执行文件安装运行时环境。如今,C++比以往任何时候都更易于移植。您可以在浏览器中轻松运行C++可执行文件:

https://github.com/kripken/emscripten

http://code.google.com/p/nativeclient/

这使得Java和C#产生的许多原因变得无关紧要。

OpenGL等开放标准也使便携式GUI编程比以往任何时候都更容易。如果你想用C++编写一个简单的GUI,可以试试Qt。

注意:如果您没有使用过,可以在任何计算机上运行C++程序,而无需安装任何东西。NET框架。在您的情况下,可能有两个原因触发目标计算机中的错误。

  1. 新计算机没有所需的运行时程序集
  2. 新计算机不需要。NET框架

那么该怎么办:

  1. 在开始你的程序之前,你必须设计你要使用的天气。NET框架是否支持。如果您使用。NET框架开发程序时,您会安装相同或更高版本的程序。NET框架。

  2. 如果你不需要使用。NET组件,则目标计算机应仅包含运行时程序集。如何摆脱.net框架

    • 右键单击解决方案->属性->常规->公共语言运行时支持->选择"无公共语言运行时间支持"中的项目

然后,您需要的只是目标计算机中的相关运行时程序集。

运行时程序集如何在新计算机中:

有两种方式:

  1. 在目标计算机中安装合适的C++争议环境(如果您使用VS2008 SP1,C++RD包应该是这样的。在下载之前,请考虑解决方案构建架构(32位/64位))。

  2. 使用解决方案包部署运行时程序集。(我喜欢这个,因为用户不需要安装任何第三方组件)

如何在我的项目中部署程序集:

  1. 为此,所有DLL、LIB、EXE都应该使用相同的运行时版本。(否则,您将面临通过"manifest"文件重定向程序集的麻烦)。

  2. 如何检查运行时版本。通过visual studio打开DLL、EXE(打开->文件)->展开RT_MANIFEST->双击其下的文件->然后打开程序集依赖项详细信息。->复制右栏中的数据并粘贴到记事本上。

你会在那里看到这种线条。以及您的特定DLL或EXE使用的版本运行时程序集。

assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86".....

识别运行时程序集的版本后,请遵循本教程,并尝试在新安装的计算机中运行。

最后:如果你认为这是。。布拉。。是如此复杂,并且您的程序非常简单,那么您可以考虑"运行时程序集静态链接"(试试谷歌)。但就我个人而言,我不喜欢这种方法。

祝你好运!