zoukankan      html  css  js  c++  java
  • 将vs2019创建的一个简单的c++控制台项目和一个简单的qt项目放到其他电脑上运行

    使用vs2019创建了一个简单的c++控制台项目,该程序就向控制台输出一句“hello world!”

    另一台无环境的win10计算机:原本只有Microsoft Visual C++ 2013 Redistributable(x64) 和Microsoft Visual C++ 2013 Redistributable(x86)两个环境

     1.项目在debug x64运行环境下,设置项目属性=》c/c++=》代码生成=》运行库=》MTd

      MTd模式用于debug模式下静态链接库的方式生成exe,这中方式生成的exe中已经包含了你的程序所需要的基本的vc++的基础库,用这中方式生成的debug文件夹直接拷贝到无环境的电脑上,exe文件点击就可以直接运行。

      但是由于这种方式是使用的静态链接库的,我在配置了qt后,在用MTd的方式时,编译报错,原因时qt默认使用的动态链接库,所以程序不能使用METd的方式编译。如果想要使用MTd的方式,就需要自己用qt源码编译静态库的版本引入。

      也就是说MTd这种方式要求你所有引用的库也是静态库,但是现在使用的别人的库大多数时动态库,所有可能会比较麻烦。

    2.项目在debug x64运行环境下,设置项目属性=》c/c++=》代码生成=》运行库=》MDd

      MDd模式用于debug模式下动态连接库的方式生成exe文件,用这种方式生成的exe文件,需要在无环境的电脑上本身有你的程序中所需要的vc++所需要的库。

      我将这种方式下生成的debug文件夹拷贝到无环境的电脑上,运行exe的时候报错,找不到msvcp140d.dll、ucrtbased.dll、vcruntime140d.dll。

      然后我在vc2019创建项目的这台电脑上C:WindowsSystem32路径下找到了这三个dll,拷贝到了无环境的电脑上的debug文件夹下,成功运行了exe。

      这里有个坑,在C:WindowsSysWOW64路径下也能找到这三个dll,但是这个路径下的dll时x86的,由于我的项目时x64的,所有需要C:WindowsSystem32路径下的dll。

    3.项目在Release x64运行环境下,设置项目属性=》c/c++=》代码生成=》运行库=》MD

      MD模式用与Release模式下动态链接库的方式生成exe文件,同样用这种方式生成的exe文件,需要在无环境的电脑上本身有你的程序中所需要的vc++所需要的库。

      但是这里需要的dll和上面需要的那上个dll不同,上面的3个dll时debug版本的,这里需要release版本的,就是去掉最后那个d,也就是msvcp140.dll、ucrtbase.dll、vcruntime140.dll。

      同样去C:WindowsSystem32路径下将这几个dll拷贝过去应该也是可以使用的,但是我没有这样测试过。

      我使用的方式是去https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads下载了一个Microsoft Visual C++ 2015-2019 Redistributable(x64)的安装文件:VC_redist.x64.exe。安装完成后就就有了需要的环境,然后直接运行exe文件成功。

      注意这样安装后还有没有debug需要的那几个dll,可能这种安装的环境仅仅支持release版本的exe。

    4.还有一种是Release x64运行环境下,设置项目属性=》c/c++=》代码生成=》运行库=》MT

      这种方式没有测试,是Release版本的用静态链接库的方式生成exe文件。应该和第一种情况一样直接拷贝生成的文件到无环境的计算机上就可以直接运行了。但是我这里没有测试,应该差不多。

    使用vs2019创建一个简单的qt项目QtGuiApplication,我使用的qt版本是5.9,在vs2019种直接创建qt项目还需要一些提早的配置,这里就不想这些配置了。

    上面说过了由于引入了qt所有这里不能使用静态链接库的生成方式,我这里使用的是:debug x64运行环境下,设置项目属性=》c/c++=》代码生成=》运行库=》MDd

    这里在生成的debug文件夹下面是没有qt相关的dll的,这里如果引入qt相关的dll是关键。

    在安装完qt后可以找到下面这样的运行程序:

    有两个上面那个是用vs创建qt程序的时候需要的,下面那个是用qt自带的编辑器创建qt程序时候需要的。我这里是用的下面的这个。

    点击运行输入以下命令:windeployqt  F:20201123package-test1QtGuiApplication1x64DebugQtGuiApplication1.exe

    windeployqt是让qt去寻找依赖的dll的命令,F:20201123package-test1QtGuiApplication1x64DebugQtGuiApplication1.exe则是我刚刚创建的qt项目生成的debug文件夹下面的exe文件的路径。执行后在debug文件夹下面就自动添加了很多文件,这些就是我的qt程序所需要的。

    然后将debug文件夹拷贝到无环境的计算机上,还需要拷贝msvcp140d.dll、ucrtbased.dll、vcruntime140d.dll这上个dll到文件夹种,就可以成功运行了。

  • 相关阅读:
    CodeForces 706C Hard problem
    CodeForces 706A Beru-taxi
    CodeForces 706B Interesting drink
    CodeForces 706E Working routine
    CodeForces 706D Vasiliy's Multiset
    CodeForces 703B Mishka and trip
    CodeForces 703C Chris and Road
    POJ 1835 宇航员
    HDU 4907 Task schedule
    HDU 4911 Inversion
  • 原文地址:https://www.cnblogs.com/maycpou/p/14025180.html
Copyright © 2011-2022 走看看