错误"msvcr100.dll"(仅在Windows 7和Vista上),即使在静态链接(/MT)之后

Error "msvcr100.dll" (only on Windows 7 & Vista) even AFTER statically linking (/MT)

本文关键字:静态 之后 MT 链接 仅在 dll msvcr100 Windows Vista 错误      更新时间:2023-10-16

我有一个简单的dll,正在使用MS弯路注入目标进程。执行注入的进程是c# .net应用程序。

DLL和detours库都已被静态链接(/MT选项)。

然而,当我试图将dll注入客户端机器上的目标程序时,我得到错误"msvcr100.dll"缺失"错误。现在我打开dll w/depends,没有依赖于"msvcr100.dll"。

更奇怪的是,这个问题只发生在客户端是vista x64或windows 7 x64时。在windows xp x32和windows 7 x32系统上成功注入dll。

有什么想法在visual studio的bug是表明依赖于一个库没有被使用?

编辑:看起来其他人也有同样的问题…从来没有得到解决。已编译的.dll文件需要msvcr100.dll加载

在客户端机器上安装Visual studio 2010 c++可重新发行版"解决"了这个问题,但是我希望通过静态链接来避免依赖。

您可能能够弄清楚我将(预注入)cdb调试器附加到加载msvcr100.dll(安装了DLL)的机器上的进程上发生了什么。使用

sxe ld:msvcr100

命令打破时,DLL加载(我不是100%确定,如果这是完全正确的语法)。一旦它被加载,您就可以通过查看调用堆栈来找出原因。如果没有,请尝试在该模块中的所有内容上设置断点:

bm msvcr100!*

,看看是谁在调用它。这应该能让你很好地理解为什么它会被加载

所以我从来没有发现到底是什么问题,但在预感我尝试运行应用程序(完全相同的构建w/mscvr100.dll错误)在另一台Windows 7机器上,它工作得很好。

我在"问题"机器上重新安装了Windows 7,相同的构建工作正常,没有错误。在我的谷歌搜索中,我看到了另一个人在卸载Visual Studio后遇到这个问题的报告。我知道有一次Visual Studio安装在"有问题"的Windows 7机器上,现在被卸载了。

如果这种情况发生在其他人身上,我建议尝试在从未安装过visual studio的机器上运行二进制文件。