代码之家  ›  专栏  ›  技术社区  ›  DShook

如何将VisualStudioC++项目打包以供发布?

  •  35
  • DShook  · 技术社区  · 17 年前

    我想知道如何生成一个包含所有必需的dll文件到.exe的发布版本,这样程序就可以在非开发计算机上运行,而不必在目标计算机上安装Microsoft可再发行软件包。

    如果不这样做,您会收到错误消息,说明应用程序配置不正确,需要重新安装。

    5 回复  |  直到 9 年前
        1
  •  17
  •   Roman Nikitchenko    9 年前
    1. 选择项目->属性
    2. 选择配置->常规
    3. 在应该如何链接MFC的框中,选择静态链接它。
    4. 选择链接器->输入。下 附加依赖项 ,添加任何需要应用程序静态链接的库。
        2
  •  10
  •   user2189331    17 年前

    您需要将所有项目的运行时库(C/C++ +GT;代码生成)设置为静态链接,这与以下默认构建配置相关:

    • 多线程调试/发布
    • 单线程调试/发布

    与这些库的“dll”版本相反。

    即使这样做,也可能需要安装合并模块/框架等,这取决于依赖项的静态lib版本是否可用。

        3
  •  4
  •   Simon Steele    17 年前

    意识到 Microsoft do not recommend that you static link the runtime into your project ,因为这会阻止Windows Update为其提供服务以修复关键的安全错误。如果您在主.exe和.dll文件之间传递内存,也会出现潜在的问题,就好像这些静态链接中的每一个都会指向运行时一样,您最终可能会遇到malloc/free不匹配问题。

    您可以将DLL包含在可执行文件中,而无需将它们编译为.exe,也无需运行redist工具-这是我要做的,而且它似乎工作正常。

    唯一值得庆幸的是,如果您要发布多种Windows版本,则需要将这些文件包括两次——新的OSS需要清单定义目录中的文件,旧的OSS需要程序目录中的所有文件。

        4
  •  0
  •   Josh    17 年前

    您将看到静态链接(而不是动态链接)

    我不知道有多少MS可再发行软件静态链接在里面。

        5
  •  0
  •   David Sykes    17 年前

    如果要查找目标计算机缺少哪个dll,请使用msdev附带的depends.exe,但也可以找到 here . 在一些目标机器上测试这个应该告诉您需要将哪个DLL与应用程序打包在一起。