【问题标题】:Which one of these headers comes from MSVCR100.DLL?这些头文件中的哪一个来自 MSVCR100.DLL?
【发布时间】:2011-08-26 18:33:56
【问题描述】:

我正在开发一个 cpp 应用程序,在我正在开发的虚拟机上运行良好,但在我的笔记本电脑(没有 c++ 可再发行包的 XP)中,它显示一个错误,指出该应用程序需要 MSVCR100.DLL 并且它不在计算机中。我没有在应用程序的任何地方直接引用 dll,所以我猜这可能是因为包含了标头。我不想使用这个 dll 包含,如果应用程序在没有它的情况下工作,我会更喜欢。这些是包含的标题:

#include <winsock2.h>
#include <windows.h>
#include <process.h>
#include <shellapi.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

我尝试评论了一些,但为了评论其他我不得不更改太多代码来测试。

这些头文件中的哪一个来自 MSVCR100.DLL?

项目设置“运行时库”设置为多线程(/MT)

【问题讨论】:

    标签: c++ dll header include header-files


    【解决方案1】:

    每当您使用 Visual Studio 2010 编译程序时,C 库中的所有内容都依赖于它。因此,您可以静态链接到 C 运行时,或者将 DLL 与您的应用程序一起部署。

    如果您想知道,stdlib.h、stdio.h、cmath.h 依赖于它,而且可能很多依赖于 C 运行时的头文件都间接包含在所有其他头文件中。所以我想说你所有的头文件都依赖于 MSVCR100.DLL。

    另一个解决方案是在 2010 旁边安装 Visual Studio 2008 + SP1(VC++ express 2008 工作正常)并在项目属性中选择“Toolset v90”。

    【讨论】:

    • 如果我的项目设置“运行时库”设置为“多线程(/MT)”,dll不应该链接到编译的exe吗?还是我需要设置其他东西来静态链接编译时的所有内容?
    • 我从其他依赖项中删除了一些 .lib,它现在运行时没有 dll 错误,它仍然可以正常工作。
    【解决方案2】:

    我认为 MSVCR100.DLL 是 Visual Studio 2010 的 C 运行时库。我想你的 labtop 没有安装 Visual Studio。所以你必须在你的应用程序中提供这个 DLL。它应该在您的开发系统中。

    【讨论】:

    • MSVCR100.DLL 是 Microsoft Visual C++ 2010 Redistributable Package 的一部分,而不是真正的 VS。但我说我不想使用或提供 dll。
    • 好吧,VC 而不是 VS,谁在乎呢。但是你需要提供这个 DLL,因为它实现了标准的 C 运行时并且没有 C 运行时 C++ 无法生存,我认为没有应用程序可以工作。您可以在 labtop 上安装所说的 Residtributable Package,它应该带有 DLL。但是,如果您没有其他依赖项,只需将此 DLL 与您的 exe 放在同一目录中即可,您将无法解决这个问题,因为从较新的 VS 版本中删除了静态链接 C 运行时的选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2014-04-13
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多