【问题标题】:c# dll not foundc# 找不到dll
【发布时间】:2012-08-09 20:28:17
【问题描述】:

我正在用 C# 编写一个小型 AOL IM 应用程序。我有我需要的所有 dll,我已经能够编译和运行我的应用程序。但是,当它运行时,我得到一个错误,上面写着

“无法加载 DLL 'acccore.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)”

我知道这意味着找不到 acccore.dll 文件,但我不知道为什么。我尝试将它放在 C:\Windows\System32 中,它也在 Visual Studio 中构建项目时创建的调试目录中。谁能告诉我如何让我的应用程序知道这个 dll 的位置?

谢谢!

【问题讨论】:

  • 从 VS 运行时或通过 .msi 安装后是否出现此错误?
  • 另外,请确保使用 Depends (dependencywalker.com) 打开 accore.dll 时没有错误。
  • 从VS运行时出现错误
  • 谢谢!我使用dependancywalker 来查找我丢失的导致它出错的dll。

标签: c# dll


【解决方案1】:

我做了一些研究,看起来 acccore.dll 是一个 COM DLL 文件。这意味着您需要运行:

regsvr32.exe C:\Windows\System32\acccore.dll

这会将 COM DLL 注册到注册表中,然后您可以在 .NET 代码中使用该 DLL。查看链接:

http://64.12.130.129/forum?c=showthread&ThreadID=1173

所以你需要使用 P/Invoke 来使用 DLL(我猜 AOL SDK 有一些你可以使用的示例代码)。

【讨论】:

    【解决方案2】:

    这个 dll 是一个程序集吗?

    如果是这样,那么 fuslogvw 将显示 CLR 在哪里寻找程序集。把它放在 .net 正在寻找的地方

    【讨论】:

      【解决方案3】:

      .NET 程序集需要位于应用程序的目录中(或其子目录之一,特别是如果它们代表不同程序集的本地化版本),或者位于 GAC(全局程序集缓存)中。如果 DLL 不是t在与.EXE相同的目录中,那是你的问题。如果是但仍然无法正常工作,则表示该程序集由于某种原因不匹配。

      【讨论】:

        【解决方案4】:

        我使用dependancywalker 来查找我丢失的导致它出错的dll。这是 Taylor Leese 在评论中提出的。

        【讨论】:

          猜你喜欢
          • 2012-05-17
          • 1970-01-01
          • 2014-04-26
          • 1970-01-01
          • 2020-10-03
          • 2015-07-19
          • 2012-07-25
          • 2016-12-18
          • 1970-01-01
          相关资源
          最近更新 更多