Visual studio Visual Studio设置以处理缺少的MSVCP140D.dll

Visual studio Visual Studio设置以处理缺少的MSVCP140D.dll,visual-studio,mfc,Visual Studio,Mfc,我的生成计算机与我的目标计算机不同(尽管两者都是Windows 10) 我正在使用VS2017的最新更新 目标机器具有MFC:14.12.25810 如何设置项目设置,以便针对该版本的MFC。我不断收到一个错误:缺少MSVCP140D.dll 当我尝试安装vs2015 C++可重新分配时,我会遇到冲突版本的错误。因此,我宁愿停止瞄准VS2015,改为VS2017,或者更好地将可再发行文件包含在我正在安装的文件夹中 以下是我的VS2017项目设置:(我也在使用最新的Windows SDK) 更

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

我正在使用VS2017的最新更新

目标机器具有MFC:14.12.25810

如何设置项目设置,以便针对该版本的MFC。我不断收到一个错误:缺少MSVCP140D.dll

当我尝试安装vs2015 C++可重新分配时,我会遇到冲突版本的错误。因此,我宁愿停止瞄准VS2015,改为VS2017,或者更好地将可再发行文件包含在我正在安装的文件夹中

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


更新

我设置了静态链接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”与其他LIB的使用冲突;使用/NODEFAULTLIB:library LinkWareMessageBus D:\Source\LinkWareMessageBus\LINK 1
严重性代码说明项目文件行抑制状态 错误LNK1120 6未解析的外部LinkWareMessageBus D:\Source\LinkWareMessageBus\x64\Debug\LinkWareMessageBus.exe 1
错误LNK2019未解析的外部符号\uuuu imp\uCalloc在函数nni\u alloc LinkWareMessageBus D:\Source\LinkWareMessageBus\nng.lib(win\u thread.c.obj)1中引用
错误LNK2019未解析的外部符号uu imp_rand_s在函数nni_plat_seed_prng LinkWareMessageBus D:\Source\LinkWareMessageBus\nng.lib(win_rand.c.obj)1中引用
错误LNK2019未解析的外部符号u imp_strerror在函数nni_plat_strerror LinkWareMessageBus D:\Source\LinkWareMessageBus\nng.lib(win_debug.c.obj)1中引用
错误LNK2001未解析的外部符号\uuu imp\u strncpy LinkWareMessageBus D:\Source\LinkWareMessageBus\nng.lib(http_server.c.obj)1
错误LNK2019未解析的外部符号\uuu imp\u strncpy在函数http\u set\u头LinkWareMessageBus D:\Source\LinkWareMessageBus\nng.lib(http\u msg.c.obj)1中引用
错误LNK2019未解析的外部符号\uuuu imp\uuuu beginthreadex在函数nni\u plat\u thr\u init LinkWareMessageBus D:\Source\LinkWareMessageBus\nng.lib(win_thread.c.obj)1中引用
错误LNK2019未解析的外部符号_imp__stricmp在函数nni_stracecmp LinkWareMessageBus D:\Source\LinkWareMessageBus\nng.lib(strs.c.obj)中引用

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

以下是链接命令参数:

/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 

我现在所做的只是用符号进行发布构建


这现在特别有用,因为我正在为其他软件编写插件,这些软件不喜欢加载我创建的DLL的调试版本。有时你看不到函数的本地堆栈变量,但你总是可以看到成员和实例变量以及参数,所以这对我来说最合适,这样就不必担心上面提到的SDK绑定问题。

可能重复您是否尝试过静态构建?Put
“MFC的使用:在共享DLL中使用MFC”
“在静态库中使用MFC”
共享库的优点是它可以接收安全更新。如果您要在自己的目录中安装共享库,则不会获得任何好处,因此如果您希望更简单,只需使用静态版本即可。此外,当我处于“Release”模式时,有时会被抛出,但它会显示“Debug”配置,反之亦然。请注意,您正在部署应用程序的调试版本(注意MSVCP140D.dll的尾部
D
)。MFC二进制文件的调试版本是Visual Studio的一部分,不可再发行。您需要部署一个版本配置。的可能重复