缺少MSVCR90D.dll 我正在编写一个C++程序(32位)。发布版本可以编译并运行而没有问题,而调试版本也可以编译而没有问题,但无法运行。显示SFML的调试版本需要MSVCR90D.dll和MSVCP90D.dll。在我的硬盘上找不到这两个文件。我自己没有编译SFML(我已经下载了二进制文件),之前也没有注意到它是用Visual Studio 2008编译的,而我使用的是VS 2010 Express。所以我认为下载VS2008可再发行版本可以解决问题,但事实并非如此。现在我不确定使用使用旧版本编译器编译的库是否是一个好主意
对我做错了什么有什么建议吗?我需要安装哪种可再发行软件才能获得丢失的DLL缺少MSVCR90D.dll 我正在编写一个C++程序(32位)。发布版本可以编译并运行而没有问题,而调试版本也可以编译而没有问题,但无法运行。显示SFML的调试版本需要MSVCR90D.dll和MSVCP90D.dll。在我的硬盘上找不到这两个文件。我自己没有编译SFML(我已经下载了二进制文件),之前也没有注意到它是用Visual Studio 2008编译的,而我使用的是VS 2010 Express。所以我认为下载VS2008可再发行版本可以解决问题,但事实并非如此。现在我不确定使用使用旧版本编译器编译的库是否是一个好主意,c++,sfml,C++,Sfml,对我做错了什么有什么建议吗?我需要安装哪种可再发行软件才能获得丢失的DLL PS:我使用的是Win7 64否,不幸的是,这些是VS2008调试运行时DLL(末尾的“D”)。官方不允许你分发它们 注意,编译器版本之间的C++混合是危险的。你的选择可能是 掌握源代码并使用VS2010自行重建(这也将允许您调试到源代码中,这对于理解/发现库中的问题非常有用) 安装VS2008 C++(Express或No.+),并与之一起工作。 我本来打算建议让构建器为您重新构建为发行版,但仍然存在2008年与201
PS:我使用的是Win7 64否,不幸的是,这些是VS2008调试运行时DLL(末尾的“D”)。官方不允许你分发它们 <>注意,编译器版本之间的C++混合是危险的。你的选择可能是
我本来打算建议让构建器为您重新构建为发行版,但仍然存在2008年与2010年的问题。对于您的主要问题,Rup是正确的。关于混合VS2008/VS2010运行时,假设:
是依赖于VS2008 dll运行时的ABI(链接时间)李>libA.dll
ABI依赖于VS2010 dll运行时libB.dll
libA.dll
和libB.dll
的release版本是安全的,只要:
- 您正在正确地进行友好链接
和libA
(在链接器输入中选择正确的libB
和libA.lib
)libB.lib
- 使用
,libA
头不会在运行时创建ABI不匹配,这取决于混合的VS2008/VS2010头(例如STL)libB
// libA.h
#include <vector>
class LibAClass
{
private:
// This is unsafe, warning c4251: users of libA may allocate a different size
// than expected for the vector. The code can perfectly compile but at runtime
// it can cause problems (verified myself)
std::vector _list;
// The following is safe as long as users of libA are not required to
// deal directly with *_listp
std::vector *_listp;
};
//libA.h
#包括
类LibAClass
{
私人:
//这是不安全的,警告c4251:libA的用户可能会分配不同的大小
//这段代码可以在运行时完美地编译
//它可能会导致问题(我自己验证)
std::vector\u列表;
//只要libA的用户不需要
//直接与*\u listp打交道
std::vector*_listp;
};
通常会咬到你的那只,混合对象是在两个分配之间分配的吗?有两个不同的运行时间,有两个不同的分配堆,您需要确保只有2008个代码分配的对象被2008代码释放。还有版本间可能存在的微小的C++ abi变化。在某些GCC版本之间发生,因为它们优化/调试ABI和名称混乱方案。发布/调试应该无关紧要。您是正确的。也请阅读我的编辑。损坏也是一个大问题,但我认为VS2010/VS2008是100%(或非常接近)兼容的。我想说的是,如果你知道你在做什么,混合依赖VS2008/VS2010运行时是相当安全的。但是,损坏并不是你真正需要担心的:如果他们改变了损坏方案,那么他们几乎肯定会以一种破坏性的方式改变ABI。无声的ABI更改更是一个问题。