【问题标题】:How to statically link to MSVCP120.dll in VS2013VS2013中如何静态链接MSVCP120.dll
【发布时间】:2014-07-13 22:20:59
【问题描述】:

当我启动 .exe 时,它​​会给出错误 MSVCP120.dll is missing。如何静态添加到项目的链接。它在链接器中吗?我需要提供 MSVCP120.dll 的路径吗?

【问题讨论】:

    标签: visual-studio visual-c++ dll linker visual-studio-2013


    【解决方案1】:

    一般而言,您不应使用静态 CRT 链接,因为它会产生许多潜在问题、安全风险和服务问题。您可以要求运行 VC++ REDIST 包(需要管理员权限)来安装“系统”版本,您可以将 VC++ MSM 模块与您自己的 MSI 安装程序一起使用,或者您可以只使用并行部署并放置与您的 EXE 位于同一文件夹中的 DLL。

    Redistributing Visual C++ Files

    您可以对 Win32 桌面应用程序使用静态链接,但只有少数地方需要这种使用(即预安装实用程序)。 CRT 设置与其他 Visual Studio 版本相同,作为编译的一部分,command-line switch 或 IDE 中项目属性/C/C++/代码生成下的设置为“多线程 (/MT)”或“多线程调试(/MTd)”

    您不能对 Windows 应用商店应用、Windows phone 8.x 或 Xbox One 应用使用静态链接。

    【讨论】:

    • 它是 Windows 桌面应用程序。我不能使用 /MT,因为它是 C++ 应用程序。如果我使用我得到错误 D8016:'/clr' 和 '/MT' 命令行选项不兼容。所以我想我必须使用/MD。但是如何通过VS2013添加dll?
    • 如果您使用的是 /clr,它不是“C++ 应用程序”,而是“托管 C++ 应用程序”,这是另一回事。不,你也不能在那里使用静态链接。 DLL 依赖通过使用 /MD 是隐含的,因此您无需将 DLL 显式添加到您的项目中,但是当您运行该 EXE 时,您确实需要它们存在于目标系统中。
    猜你喜欢
    • 2010-09-30
    • 2015-08-24
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多