Visual Studio设置来处理丢失的MSVCP140D.dll

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio设置来处理丢失的MSVCP140D.dll相关的知识,希望对你有一定的参考价值。

我的构建计算机与我的目标不同(尽管两者都是Windows 10)。

我正在使用VS2017的最新更新。

目标机器有MFC:14.12.25810

如何设置项目设置,以便我可以定位该版本的MFC。我一直收到错误:丢失MSVCP140D.dll

当我尝试安装VS2015 C ++可再发行组件时,我收到有关冲突版本的错误。所以我宁愿停止针对VS2015,并更改为VS2017,或者更好地将redistributable包含在我正在安装的文件夹中。

以下是我的VS2017项目设置:(我也使用最新的Windows SDK)。

enter image description here


UPDATE

我设置了Static Linked MFC,它将switch / MTd添加到命令行:

/permissive- /Yu"stdafx.h" /GS /W3 /Zc:wchar_t /ZI /Gm- /Od /sdl /Fd"x64Debugvc141.pdb" /Zc:inline /fp:precise /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MTd /FC /Fa"x64Debug" /EHsc /nologo /Fo"x64Debug" /Fp"x64DebugLinkWareMessageBus.pch" /diagnostics:classic 

但是,现在我在编译时遇到了一堆错误:

严重级代码描述项目文件行抑制状态警告LNK4098 defaultlib'MSVCRTD'与使用其他库冲突; use / NODEFAULTLIB:库LinkWareMessageBus D: Source LinkWareMessageBus LINK 1 严重级代码描述项目文件行抑制状态错误LNK1120 6未解析的外部链接LinkWareMessageBus D: Source LinkWareMessageBus x64 Debug LinkWareMessageBus.exe 1 错误LNK2019未解析的函数nni_alloc中引用的外部符号__imp_calloc LinkWareMessageBus D: Source LinkWareMessageBus nng.lib(win_thread.c.obj)1 错误LNK2019未解析的函数nni_plat_seed_prng中引用的外部符号__imp_rand_s LinkWareMessageBus D: Source LinkWareMessageBus nng.lib(win_rand.c.obj)1 函数nni_plat_strerror中引用的错误LNK2019未解析的外部符号__imp_strerror LinkWareMessageBus D: Source LinkWareMessageBus nng.lib(win_debug.c.obj)1 错误LNK2001未解析的外部符号__imp_strncpy LinkWareMessageBus D: Source LinkWareMessageBus nng.lib(http_server.c.obj)1 错误LNK2019未解析的函数http_set_header中引用的外部符号__imp_strncpy LinkWareMessageBus D: Source LinkWareMessageBus nng.lib(http_msg.c.obj)1 错误LNK2019未解析的外部符号__imp__beginthreadex在函数nni_plat_thr_init中引用LinkWareMessageBus D: Source LinkWareMessageBus nng.lib(win_thread.c.obj)1 错误LNK2019未解析的函数nni_strcasecmp中引用的外部符号__imp__stricmp LinkWareMessageBus D: Source LinkWareMessageBus nng.lib(strs.c.obj)

我也试过设置“忽略所有默认库=否”但我仍然得到相同的错误。

这是LINK命令参数:

/OUT:"D:SourceLinkWareMessageBusx64DebugLinkWareMessageBus.exe" /MANIFEST /NXCOMPAT /PDB:"D:SourceLinkWareMessageBusx64DebugLinkWareMessageBus.pdb" /DYNAMICBASE "flatbuffers.lib" "nng.lib" "mswsock.lib" "advapi32.lib" "ws2_32.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /IMPLIB:"nng.lib" /DEBUG /MACHINE:X64 /INCREMENTAL /PGD:"D:SourceLinkWareMessageBusx64DebugLinkWareMessageBus.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"x64DebugLinkWareMessageBus.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"D:SourceLinkWareMessageBus
nglib" /LIBPATH:"D:SourceLinkWareMessageBusflatbufferslib" /TLBID:1 
答案

我现在正在做的只是用符号做版本构建。

https://msdn.microsoft.com/en-us/library/fsk896zz.aspx?f=255&MSPPError=-2147217396

这在现在特别有用,因为我正在编写其他软件的插件,这些插件不喜欢加载我创建的DLL的调试版本。有时您无法看到函数的本地堆栈变量,但您始终可以看到成员和实例变量以及参数,因此这对我来说效果最佳,然后您不必担心上面的SDK绑定问题。

以上是关于Visual Studio设置来处理丢失的MSVCP140D.dll的主要内容,如果未能解决你的问题,请参考以下文章

python BIMEHW - Visual Studio +中的单文件批处理编译器,用于g ++和MSVC

Visual Studio 2010 并排运行时丢失用户设置

Visual Studio版本号MSVC版本工具集版本号

Visual Studio 2017中的Android设备管理器显示'Android SDK平台丢失'

vscode使用visual studio编译工具MSVC构建C++工程

vscode使用visual studio编译工具MSVC构建C++工程