首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缺少MSVCR90D.dll

缺少MSVCR90D.dll
EN

Stack Overflow用户
提问于 2012-05-10 18:05:25
回答 2查看 1.4K关注 0票数 1

我正在编写一个使用SFML 1.6的C++程序(32位)。发布版本可以编译和运行,没有问题,而调试版本也编译没有问题,但不能运行。Dependency Walker显示调试版本的SFML需要一个MSVCR90D.dll和一个MSVCP90D.dll。在我的硬盘上找不到这两个文件。我没有自己编译SFML (我已经下载了二进制文件),也没有注意到它是用Visual Studio2008编译的,而我使用的是VS2010Express。所以我以为下载VS2008可再发行版可以解决这个问题,但它没有解决这个问题,现在我不确定使用用旧版编译器编译的库是否是一个好主意。

对我做错了什么有什么建议吗?我需要安装哪个可再发行组件才能获得这些丢失的DLL?

PS:我使用的是Win7 64

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-10 18:07:34

不,不幸的是,这些是VS2008调试运行时DLL(末尾的'D‘)。官方不允许你分发它们。

请注意,在编译器版本之间混合C++是危险的。你的选择可能是

library)

  • install

  • 获取源代码并使用VS2010自己重新构建它(这也将允许您调试到它中,这对于理解/发现 VS2008 C++的问题(无论是不是明确的)并使用它是很有用的。

我本打算建议构建器为你重新构建为发行版,但仍然存在2008与2010的问题。

票数 2
EN

Stack Overflow用户

发布于 2012-05-10 19:11:02

对于您的主要问题,Rup是正确的。关于混合VS2008/VS2010运行时,让我们这样说:

  • libA.dll依赖于VS2008动态链接库runtime;
  • libB.dll依赖于VS2010动态链接库运行时。

根据我的经验,在VS项目中使用libA.dlllibB.dllrelease版本是安全的,只要:

  • 您正确地动态链接了libAlibB (在链接器中选择正确的libA.liblibB.lib libAlibB headers <代码>E223不会在运行时创建不匹配,这取决于混合的VS2008/VS2010标题(例如STL)。<代码>H224<代码>F225

例如:

代码语言:javascript
复制
// 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;
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10531753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档