C# 无法加载 DLL(找不到模块结果:0x8007007E)
C# Unable to load DLL (Module could not be found HRESULT: 0x8007007E)
错误:无法加载 DLL 'x.dll':找不到指定的模块。(HRESULT的例外:0x8007007E)
操作系统: 视窗 7
我有两个工作站,Visual Studio 2012,使用.net 4.0;另一个没有安装VS。在VS2012的第一个工作站上,我有一个C#解决方案,导入了一个C++项目。我正在使用:
[DllImport("x.dll", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.I4)]
在这个站正在工作。
但是当我移动到另一个站(没有安装 VS)时,出现了该错误。如果我安装 VS,它就可以工作了。
出现此问题的可能原因是什么?关于我可能缺少什么或如何调试此问题的任何想法?
最可能的原因是未安装 Visual Studio 的计算机缺少非托管 DLL 所需的C++运行时。从可下载的可再发行组件安装相应的C++运行时。
请确保非托管 DLL 链接到发布运行时而不是调试运行时。后者不能重新分发。
您可以使用依赖关系查看器、进程监视器等工具调试非托管 DLL 依赖项问题。
我遇到了同样的问题
-
使用依赖关系查看器检查缺少的依赖关系
-
就我而言,我错过了
msvcp110d.dll
和msvcr110d.dll
-
我从我的开发 PC 复制了这两个文件来测试 PC 的
C:WindowsSysWOW64
PC 并工作了! -
此外,您还可以将Visual Studio C++ 11.0 DebugCRT(x86)添加为InstallShield中的依赖项以使其正常工作。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- valgrind-hellgrind与泄漏检查的结果不同
- 尝试导入pybind-opencv模块时出现libgtk错误
- 用C++20 fmt限制结果的总大小
- 如何返回一个类的两个对象相加的结果
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 序列化,没有库的整数,得到奇怪的结果
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 在更改for循环的第三部分后,未使用for循环结果
- 使用++运算符会导致意外的结果
- 为什么在逗号分隔符上下文中将预增量的结果强制转换为void
- C++Brute Force攻击函数不会返回结果
- 为什么当我解模块化时,这个C++代代码"效率较低"?
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 算术运算的结果类似于:C浮点变量中的1/3
- 特征 LLT 模块给出不正确的结果?
- C# 无法加载 DLL(找不到模块结果:0x8007007E)