【问题标题】:Unable to load DLL 'LibFlac': The specified module could not be found. (Exception from HRESULT: 0x8007007E)无法加载 DLL 'LibFlac':找不到指定的模块。 (来自 HRESULT 的异常:0x8007007E)
【发布时间】:2015-03-03 18:46:23
【问题描述】:

HERE 是我的项目的链接。

错误在第 107 行:“context = FLAC__stream_encoder_new();”在文件中:FlacWriter.cs --> 我没有写那个文件。我从HERE得到它

所以我知道 libFLAC.dll 丢失了。所以我尝试了以下所有方法来解决这个问题:

我从rarewares.org/lossless.php#flac-dll-x64 下载了libFLAC dll 我尝试将其添加为参考,但出现此错误: “无法添加对 C:\CodeProjects\WaveConverter\WaveConverter\Libraries\libFLC_dynamic.dll' 的引用。请确保该文件可访问,并且它是有效的程序集或 COM 组件。”

我尝试了其他方法:我将 dll 文件添加到 bin/Debug,重新打开了我的项目。再次运行该项目。在线相同的错误:“ context = FLAC__stream_encoder_new();”错误:“无法加载 DLL 'LibFlac':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)”

我还尝试在我的代码中“导入”DLL,如下所示:我尝试在项目文件的第 14 行下添加以下行:“[DllImport("libFLAC.dll")]”:Worker.cs 我收到此错误:“重复的 'DLLimport' 属性”

我还从dependencywalker.com 下载了dependency-walker 不知道如何操作它,但是当它完成下载时,我点击了OPEN 图标并打开了我试图添加到项目中的libFLAC_dynamic.dll 文件。并且没有错误。我不确定如何使用这个dependencyWalker...

我还能尝试什么?如何解决此错误?

【问题讨论】:

  • 这是区分大小写的问题吗?你称它为“libFLAC”,但 github 代码称它为“libFlac”。
  • 我尝试将文件:FlacWriter.cs 中的第 12 行从:LibFlac 更改为 LibFLAC。没区别,还是一样的错误。
  • Windows 上的文件不区分大小写。这是一个糟糕的引导。

标签: c# dll pinvoke dllimport


【解决方案1】:

您正在 p/调用非托管库名称 LibFlac.dll。当您第一次从库中调用函数时,您需要该库及其依赖项位于 DLL 搜索路径中。通常这意味着执行以下操作:

  1. LibFlac.dll 与您的可执行文件放在同一目录中,并且
  2. 安装LibFlac.dll 拥有的所有依赖项。通常这将是一个 MSVC C++ 运行时。仔细阅读文档以了解 DLL 具有哪些依赖项。

这是一个非托管 DLL。不要尝试将其添加为参考。您拥有的 DLL 似乎也被命名为 libFLC_dynamic.dll,这与您的代码所期望的名称不同。你有正确的 DLL 吗?

【讨论】:

  • 嘻嘻嘻对不起大卫!!!!!!你是对的,依赖是问题。当我通过dependancyWalker 软件时,我的旧LibFlac.dll 出现错误。所以我从另一个网站下载了新的 libflac dll,没有任何依赖错误。所以它起作用了!最后我不能继续我的新错误!祝你有美好的一天,抱歉之前的事。
  • 不!也修好了!我很幸运,我这辈子从来没有这么快地修复过错误。
猜你喜欢
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多