- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 Visual Studio 中编写一个简单的 C++
应用程序。它还有一个安装项目。它在我的开发计算机上运行良好,但是当我在用户计算机上安装此应用程序时,它需要 Visual C++ Redistributable Package
。我想知道为什么我的应用程序需要 C++ Redistributable
?标准 C++
运行时库随 Windows 一起提供,不是吗?
最佳答案
Microsoft 随大多数 32 位 Windows 版本一起提供的 C 运行时库的唯一版本是 msvcrt.dll
。该库提供了 C 和 C++ 程序所需的一组典型库函数。其中包括字符串操作、内存分配、C 风格输入/输出调用等。
Visual Studio 6.0 的编译器链接到该库,因此,如果您在 VS 6.0 中进行开发,则在大多数用户的计算机上不会遇到任何问题。
但是,如果您在 VS 2005、VS 2008、VS 2010、VS 2012、VS 2013 或 VS 2015 中进行开发,则必须随应用程序一起分发其他 C 运行时库。这是因为他们的编译器链接到 msvcrt80.dll
、msvcrt90.dll
、msvcrt100.dll
、msvcrt110.dll
、 msvcrt120.dll
和 msvcrt140.dll
,它们不随 Windows 一起提供。
可能的解决方案是与运行时库静态链接,但如果您的文件中同时存在 .exe
和 .dll
,则可能会导致很多问题。应用。 不要这样做。
更具体地说,我将允许自己引用 this 的一部分答案:
Using /MT is risky if you create DLLs as well as an EXE. You'll end up with multiple copies of the CRT in your program. This was especially a problem with earlier versions of VS where each CRT would get its own heap, not so much with VS2012. But you can still have ugly runtime problems when you have more than one "errno" variable for example. Using /MD is highly recommended to avoid such lossage.
另一种可能的解决方案是要求在用户计算机上安装适当的 Microsoft Visual C++ Redistributable 软件包。
可以通过在安装项目的先决条件属性中指定此要求来完成。
此外,您还可以通过在安装项目中包含适当的“merge module ”来分发运行时dll
。在这种情况下,请不要忘记添加适当的“策略合并模块”,以避免由于运行时版本不正确而导致的错误。
最后,您可以将所需的 DLL 放在应用程序安装的同一文件夹中。
关于visual-studio - 为什么我的应用程序需要 Visual C++ Redistributable 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16167305/
我重建了一台笔记本电脑,并在此过程中安装了 VS2017,其中包括安装 C++ 2017 Redistributable(x64) - 14.10.24728 我尝试安装其他使用 C++ Redist
过去几年我一直坚持使用 .Net 2.0,直到最近才有机会使用 VS2010 和 .Net 4。 当 Visual Studio 2005 安装在计算机上时,它在位置 C:\Program Files
python 是否需要 microsoft visual c++ redistributable 才能运行代码? 我正在使用 pyinstaller 将我的 .py 代码编译成 exe。在某些系统中,
我正在安装 GTA 5,它还安装了 Visual C++ Redistributables。这让我对某事感到好奇,因为这种情况经常发生。 据我所知,这些是链接到 VC++ 库所必需的,但我的系统上已经
我在哪里可以下载以下版本的 Java 运行时的可再发行组件? Java 1.6 Update 29 最佳答案 Java 的可再发行组件是 JRE 和 JDK。您可以从 Oracle 网站获取它们。如果
我正在创建一个 .msi 安装程序,它必须确定系统中是否存在 Visual C++ 2015 Redistributable,如果没有,则使用自定义消息中断安装。官方 Wix 文档指的是 VC++ 的
我已经让 XNA 在 Visual Studio 2012 上运行得非常好,并且在任何已经安装了 XNA Framework Redistributable 4.0 的计算机上发布、安装和运行游戏也能
我们公司正准备在全公司范围内升级到 Windows 7 64 位。运行升级项目的人员已经汇总了需要在每台机器上安装的应用程序列表,我和我的同事的任务是在新操作系统中测试所有这些应用程序。 我们的应用程
上周我继承了一个遗留的非托管 C++ 应用程序。 不幸的是,项目设置不是 100% 可靠的,并且没有文档。我所知道的是,该产品是使用 Microsoft Visual C++ 2008 Redistr
几个月前,我安装了 Visual Studio IDE,然后卸载了它,并(愚蠢地)卸载了所有 Visual C++ Redistributables。我成功安装了从 2005 年到 2013 年的所有
这个问题在这里已经有了答案: Detect if Visual C++ Redistributable for Visual Studio 2012 is installed (21 个回答) 关闭
如果 visual C++ 编译器编译的代码是纯 C++,为什么还需要可再分发的包?这会使您的代码依赖于平台吗?将可视化 C++ 编译器与可再发行组件包一起使用是否比将其他 IDE 与 g++ 一起使
我在 C++ 培训项目中做了很多事情,stackoverflow 对我帮助很大。我总是尽量保持它的“标准”,这样它就可以跨平台了。到处使用 boost、C++11 线程和使用 WIN32 套接字或 B
为了能够通过 SSIS 工作流使用 Excel,我需要安装适当的插件。可再发行和运行时有什么区别? 例子: Microsoft Access Database Engine 2010 Redistri
我在带有 GPU 的 Windows 机器上工作。 我已经在 conda 环境中安装了 pytorch conda install pytorch torchvision cudatoolkit=10
我有包含 vcredist_x86.exe/vcredist_x64.exe 的安装程序,所以如果用户机器没有安装 VC++ 可再发行组件,那么我安装它。 但是,vcredist_x86.exe/vc
随着 Microsoft 在其最新版本中更改注册表项的模式,我如何检测机器上是否安装了 Visual C++ 2017 Redistributable? 我的目标是安装 VC++2015Redist,
我正在 Visual Studio 中编写一个简单的 C++ 应用程序。它还有一个安装项目。它在我的开发计算机上运行良好,但是当我在用户计算机上安装此应用程序时,它需要 Visual C++ Redi
我需要使用 JRE 在 Tomcat 7 上分发我的 Web 应用程序,并覆盖(如果客户有)他们自己机器上的 JAVA_HOME 设置。我需要能够将 tomcat 安装为 Windows 服务并启动/
我正在制作一个非常小的 MFC 应用程序 TestEnumProcs.exe,它没有很多依赖项。这是“Dependency Walker”的屏幕截图: 我获得了 Microsoft 的 MFC 可再发
我是一名优秀的程序员,十分优秀!