C++ visualc&x2B+;/VisualStudio设置。MSVCR120D.DLL需要什么

C++ visualc&x2B+;/VisualStudio设置。MSVCR120D.DLL需要什么,c++,visual-c++,visual-studio-2013,C++,Visual C++,Visual Studio 2013,背景。我在另一台计算机上运行了我的程序的发布版本,并立即收到一条消息,“找不到您的_DLL.DLL或它的一个依赖项”。我相信我已经找到了“Your_DLL.DLL”使用MSVCR120D.DLL的原因。我使用Dependency Walker(dependence.exe)检查了这一点。在我原来的计算机上,一切都很好,因为我有完整的Visual Studio(2013)和MSVCR120D.DLL。但是,它不存在于另一台计算机上,也不应该存在,因为它是MSVCR120.DLL的调试版本。我正在绞

背景。我在另一台计算机上运行了我的程序的发布版本,并立即收到一条消息,“找不到您的_DLL.DLL或它的一个依赖项”。我相信我已经找到了“Your_DLL.DLL”使用MSVCR120D.DLL的原因。我使用Dependency Walker(dependence.exe)检查了这一点。在我原来的计算机上,一切都很好,因为我有完整的Visual Studio(2013)和MSVCR120D.DLL。但是,它不存在于另一台计算机上,也不应该存在,因为它是MSVCR120.DLL的调试版本。我正在绞尽脑汁想弄清楚在我的“Your_DLL”项目中我在哪里使用MSVCR120D.DLL,或者在发布版本下有任何调试设置。在整个目录中搜索MSVCR120D.DLL时,没有发现任何结果。当然,发布版本设置中的某些内容可能以某种方式使用了调试dll,而调试dll又反过来调用此调试dll。有人能给我一个线索去哪里找这个问题吗

谢谢


Dave

运行时库的风格在编译器开关/M中指定

对于动态链接的CRT,发布配置应为/MD,调试应为/MDd。首先,我要检查一下:

项目属性->配置属性->C/C++->代码生成->运行库

[补充]
Depends工具有一个“Profile”命令(Profile->Start Profiling),您可以在其中看到动态加载的DLL的运行时信息。希望你能找到罪犯。

谢谢你的回答。我们发现了问题,我必须承认是我造成的!“Your_DLL.DLL”在调试和发布时构建得很好。问题是我如何从另一个dll使用它。另一个dll是一个C#项目,在“引用”下,我添加了“Your#dll.dll”。不幸的是,我将“复制本地”保留为True。根据公司政策,我们将所有内容构建到一个中心位置C:\bin\debug或C:\bin\release。另外,根据公司的政策,当我们添加引用时,我们选择调试版本(您必须选择一个!),但要确保“Copy Local”为FALSE。因此,当构建脚本构建时,它会正确构建“Your_DLL.DLL”,并将发布版本放在C:\bin\release中。然而,当随后构建CSharp.dll时,它将调试版本的“Your_dll.dll”放在C:\bin\release中。当我们看到您的_DLL.DLL在c:\bin\debug和c:\bin\release中的版本大小相同时,我们终于注意到了这个问题

对于我们处理推荐信的方式,我总是有一种沮丧的感觉。也许有更好的办法?但这可能是另一个堆栈溢出问题

我希望这对将来的人有所帮助。 非常感谢。
Dave

当您将活动构建配置设置为Release.cup时,构建配置管理器会说什么,谢谢您这么快就回来了。我试着展示一张图片来展示它所说的内容。标题是“配置管理器”。如果Acitve解决方案配置为Release,则活动解决方案平台为x64,且相关dll显示为配置“Release”,平台为x64您运行的是64位版本还是32位版本?如果存在32位配置,请检查32位配置所说的内容。Bug builds始终使用可再发行DLL的调试版本,release builds使用可再发行DLL的版本(这应该是默认版本)。如果您计划将调试构建部署到非开发机器上,那么还必须部署调试可再发行版本。最简单的方法是将它们复制到与可执行文件/DLL相同的目录中。@SimonKraemer请注意,在大多数情况下,调试DLL会违反许可证条件。如果您需要在另一台PC上安装调试环境,则需要安装Visual Studio的一个版本。谢谢。我检查过了,它确实是/MD(不是/MDd)。还有其他地方需要检查吗?@Dave-如果你正在拉其他DLL,你必须对它们进行相同的检查。是的,所有其他DLL似乎都设置为/MD。通过运行Matlab编译器创建了一些静态链接的库。有没有办法判断.lib是否依赖于调试内容?当我打开.lib时,dependens.exe似乎发出嘎嘎声。ThanksStatic库链接到DLL或可执行文件,因此DLL或可执行文件将取决于调试运行时。按照建议在dependency walker中使用“Profile”来查找试图加载它的用户。