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

时间:2018-07-04 19:52:53

标签: visual-studio mfc

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

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

目标计算机具有MFC:14.12.25810

如何设置项目设置,以便可以定位到该版本的MFC。我不断收到错误消息:缺少MSVCP140D.dll

当我尝试安装可再发行的VS2015 C ++时,出现有关版本冲突的错误。因此,我宁愿停止将VS2015定位为目标,而改为VS2017,或者最好将可再发行文件包含在我要安装的文件夹中。

这是我的VS2017 Project设置:(我也在使用最新的Windows SDK)。

enter image description here


更新

我设置了静态链接MFC,它在命令行中添加了开关 / MTd

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

但是,现在我在编译时遇到了很多错误:

  

严重性代码描述项目文件行抑制状态       警告LNK4098 defaultlib'MSVCRTD'与使用其他库冲突;使用/ NODEFAULTLIB:library LinkWareMessageBus D:\ Source \ LinkWareMessageBus \ LINK 1
      严重性代码说明项目文件行抑制状态       错误LNK1120 6无法解析的外部LinkWareMessageBus D:\ Source \ LinkWareMessageBus \ x64 \ Debug \ LinkWareMessageBus.exe 1
      错误LNK2019未解析的外部符号__imp_calloc在函数nni_alloc中引用LinkWareMessageBus D:\ Source \ LinkWareMessageBus \ nng.lib(win_thread.c.obj)1
      错误LNK2019无法解析的外部符号__imp_rand_s在函数nni_plat_seed_prng中引用LinkWareMessageBus D:\ Source \ LinkWareMessageBus \ nng.lib(win_rand.c.obj)1
      错误LNK2019未解析的外部符号__imp_strerror在函数nni_plat_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未解析的外部符号__imp_strncpy在函数http_set_header中引用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未解析的外部符号__imp__stricmp在函数nni_strcasecmp中引用LinkWareMessageBus D:\ Source \ LinkWareMessageBus \ nng.lib(strs.c.obj)

我还尝试设置“忽略所有默认库=否”,但仍然出现相同的错误。

这是LINK命令参数:

/OUT:"D:\Source\LinkWareMessageBus\x64\Debug\LinkWareMessageBus.exe" /MANIFEST /NXCOMPAT /PDB:"D:\Source\LinkWareMessageBus\x64\Debug\LinkWareMessageBus.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:\Source\LinkWareMessageBus\x64\Debug\LinkWareMessageBus.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"x64\Debug\LinkWareMessageBus.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /LIBPATH:"D:\Source\LinkWareMessageBus\nng\lib" /LIBPATH:"D:\Source\LinkWareMessageBus\flatbuffers\lib" /TLBID:1 

1 个答案:

答案 0 :(得分:0)

我现在正在做的只是带有符号的发行版本。

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

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