错误"msvcr100.dll"(仅在Windows 7和Vista上),即使在静态链接(/MT)之后
Error "msvcr100.dll" (only on Windows 7 & Vista) even AFTER statically linking (/MT)
我有一个简单的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的机器上运行二进制文件。
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- #为""定义宏;静态";针对不同的上下文
- cmake如何在fedora工作站中找到boost静态库包
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 将公共但非静态的成员函数与ALGLIB集成
- cmake在我的项目中所需的所有静态库都不成功
- C++从另一个类访问公共静态向量的正确方法是什么
- 在类定义之后定义一个私有方法
- 基于boost的程序的静态链接——zlib问题
- 在静态库中嵌入类方法
- win32 c++ 我想在静态标签的文本之后直接插入一个 EDIT 控件
- 构建一个真正、完全静态的Qt 5框架和应用程序(Qt 5.8之后)
- 是在C 静态初始化之前或之后调用dllgetClassObject
- 在push_back到静态向量之后C++取消定位
- 为什么在静态强制转换之后调用构造函数
- 在方法名称之前或之后放置常量、静态和虚拟
- 静态无符号 int foo 和更高之后的 if ( foo >0 )?
- c++之前/之后的constexpr静态成员
- 错误"msvcr100.dll"(仅在Windows 7和Vista上),即使在静态链接(/MT)之后