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

时间:2013-02-22 07:18:54

标签: c++ .net frameworks

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

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

5 个答案:

答案 0 :(得分:7)

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

您甚至可以根据LGPL许可开发商业应用程序。

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

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

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

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

答案 1 :(得分:3)

坚持使用C ++标准,避免使用Microsoft扩展(托管代码),只调用操作系统的POSIX功能,然后就可以编写可移植程序了。

答案 2 :(得分:1)

您好像已经创建了Managed C++ Project。而是创建一个空的Win32 C++ project,然后添加.cpp / .h文件。这将限制您使用C ++运行时的所有PC上可用的默认库。如果要删除该依赖项,则使用/MT选项在运行时中进行静态编译。详情@ http://msdn.microsoft.com/en-us/library/2kzt1wy3(v=vs.71).aspx

当你继续前进时,你需要意识到你所依赖的库以及那些可用的库的操作系统版本,或者你需要用它们打包它们。

答案 3 :(得分:0)

Java和C#都有助于制作便携式程序。但是,通常,人们必须为使用这两种语言编写的可执行文件安装运行时环境。如今,C ++比以往更具可移植性。您可以在浏览器中轻松运行C ++可执行文件:

https://github.com/kripken/emscripten

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

这使得Java和C#无关紧要的原因很多。

OpenGL等开放标准也使便携式GUI编程变得前所未有的简单。如果你想用C ++编写一个简单的GUI,请尝试Qt。

答案 4 :(得分:0)

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

  1. 新计算机没有所需的运行时装配。
  2. 新计算机没有安装所需的.NET框架。
  3. ..........................................

    那该怎么做:

    1. 在开始您的程序之前,您必须设计天气,您是否将使用.NET框架支持。如果在开发程序时使用.NET框架,则可以在目标计算机中安装相同或更高版本的.NET框架。

    2. 如果您不需要使用.NET组件,那么您的目标计算机应该只包含运行时程序集。 如何摆脱.net框架

      • 右键点击解决方案中的项目 - >属性 - >一般 - >公共语言运行时支持 - >选择“没有公共语言运行时支持”。
    3. ..........................................

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

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

      有两种方法:

      1. 在目标计算机中安装合适的C​​ ++可争议环境(如果使用VS2008 SP1,C ++ RD程序包应为this。请在下载之前考虑解决方案构建体系结构(32位/ 64位)。

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

      3. ..........................................

        如何使用我的项目部署程序集:

        1. 为此您的所有DLL,LIB,EXE应使用相同的运行时版本。(如果不是,您将面临通过'manifest'文件重定向程序集的麻烦)。

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

        3. 你会在那里看到这种线。 and ther是您的特定DLL或EXE使用的版本运行时程序集。

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

          在确定运行时程序集的版本后,按照this教程进行操作,并尝试在新安装的计算机上运行。

          最后:如果你觉得这个bla ... bla ..是如此复杂而你的程序非常简单,那么你可以考虑一下“运行时程序集静态链接”(试试谷歌)。但我个人不喜欢这种方法。

          祝你好运!