运行以下引用非托管DLL(用C编写)的C#应用程序时,我得到一个DllNotFound异常,其中包含以下信息:
其他信息:无法加载DLL'C:\ Windows \ System32 \ myLib.dll':找不到指定的过程。 (HRESULT异常:0x8007007F)
我尝试了什么:
这令人困惑,因为加载DLL所需的依赖项似乎很少。
答案 0 :(得分:3)
不要将您的DLL复制到系统文件夹。这属于系统,你不应该修改它。从已放置的任何系统文件夹中删除这些DLL。
而是将您的DLL放在与可执行文件相同的目录中。之后,需要的另一步是确保任何依赖项(通常是VC运行时)都可用。根据您要如何部署,这可能涉及在任何目标计算机上安装VC可再发行组件包。
答案 1 :(得分:0)
旧版本的依赖项(本例中为Jungo DLL)没有导出与新版本相同的一组函数,但是已经安装到错误的机器上。复制新版本解决了问题。
因此,虽然依赖文件存在于两台计算机上,但必要的导出函数集却不存在。 C#在DLL A上指定了“无法找到程序”错误,从技术上讲,它是依赖的依赖。
事实证明,依赖性walker在识别依赖关系的方面非常有用,并且表明其中一个依赖项缺少导入。