。NET Core应用程序中的System.DllNotFoundException

问题描述 投票:1回答:2

在.NET Core应用程序中,当我尝试运行单元测试项目时出现此错误:

System.DllNotFoundException: Unable to load DLL 'opencv_core246' or one of its dependencies: The specified module could not be found. (0x8007007E)

DLLImport行仅使用'opencv_core246'(无路径),因此我的理解是运行时应与可执行文件本身位于同一目录(否则将出现Windows / System32或Windows / SystemWOW64)。现在它位于这三个位置,仅此而已,但仍然没有骰子。我的同事具有相同的设置(我的计算机是在Mac上的Parallels中运行的Windows VM,而他的计算机是本机Windows,但这无关紧要),并且他的测试运行正常。任何有关如何调试这一想法的想法都值得赞赏。

.net-core dllimport
2个回答
2
投票

首先,请不要在整个系统上都散布DLL。那只会使生活变得复杂。删除系统目录中的DLL,再也不要修改这些目录。它们属于系统,而不是您。


0
投票

我添加自己的答案,以防对他人有所帮助。如已接受的答案所示,我确实缺少本机dll(opencv_core246)的依赖项。问题是如何找出这些依赖关系。我使用了一个名为dependency walker的实用程序,但这给出了相当混乱的结果-似乎表明我缺少Windows内核!可以使用Microsoft C ++编译器随附的dumpbin实用程序来澄清问题。这表明我的dll有3个依赖项,即内核和2个依赖项,它们是C ++ redist软件包的一部分,该软件包未安装在系统上。安装该补丁可以解决缺少的依赖项问题。

© www.soinside.com 2019 - 2024. All rights reserved.