【问题标题】:Unable to load DLL ‘ABCpdf9-32.dll’. The specified module could not be found (Exception from HRESULT: 0x8007007E)无法加载 DLL “ABCpdf9-32.dll”。找不到指定的模块(来自 HRESULT 的异常:0x8007007E)
【发布时间】:2013-05-16 12:41:44
【问题描述】:

在 32 位系统上开发和部署成功,但是运行 Windows Server 64 位的生产系统导致几个错误:

异常 System.DllNotFoundException 无法加载 DLL 'ABCpdf9-32.dll'。找不到指定的模块(异常 来自 HRESULT:0x8007007E)

【问题讨论】:

  • 你是用 32 位编译的吗?它可能在 64 位的“任何 CPU”上,您无法访问 32 位库
  • 这是一个由 ABCpdf.dll 程序集使用的非托管 DLL。您只是忘记复制它的可能性很高。使用供应商的安装程序进行部署。或关注他的manual install instructions(概念+手动安装部分)。

标签: c#


【解决方案1】:

ABCpdf 是一个支持 32 位和 64 位架构的第三方库。 .dll 旨在使用软件供应商提供的安装程序安装到位。当您从供应商处下载安装程序时,您选择 32 位安装程序或 64 位安装程序,然后安装它,然后输入密钥即可。从您的应用程序的角度来看,您只需引用 abcpdf.dll 即可,无论您将部署到 32 位还是 64 位,并且 dll 句柄会将您指向正确的 dll。

到目前为止的答案误导了你。不要通过更改您的应用程序来解决问题,只需在您要部署的服务器上安装正确版本的 ABCpdf。

【讨论】:

    【解决方案2】:

    只有在所有开发者和服务器机器上安装供应商提供的软件后,问题才会得到解决。

    【讨论】:

      【解决方案3】:

      我的应用程序是 64 位的,一些旧模块正在使用 .32 位 ABCpdf。当我尝试为使用 64 位 ABCpdf 的新模块打印 pdf 时,它可以工作并打印。但是当代码尝试使用 32 位的旧模块进行打印时,它会引发以下异常。因为只有一个 ABCpdf.dll 需要添加。此外,您不能将 ABCpdf8-32.dll 直接引用到 64 位项目中。

      我收到以下错误: 无法加载 DLL 'ABCpdf8-32.dll':找不到指定的模块。 (来自 HRESULT 的异常:0x8007007E)”

      当我尝试添加参考时出现以下错误。

      尝试了一段时间后,我直接将 dll 添加到 bin 文件夹中,并且可以正常工作。权限不仅是问题,因为我的所有文件夹都具有适当的权限。所以,如果有人遇到类似问题,可以试试这个。

      【讨论】:

        【解决方案4】:

        ABCpdf 是一个具有非托管代码的 COM dll 对吗?在这种情况下,它不能在 64 位平台上运行。下面给出的文章解释了这一点(检查它的最后一点)

        http://www.hanselman.com/blog/BackToBasics32bitAnd64bitConfusionAroundX86AndX64AndTheNETFrameworkAndCLR.aspx

        此外,我还要确保 ABCpdf dll 不依赖于任何其他 32 位 dll。您可以使用 Dependency Walker 进行测试 (http://www.dependencywalker.com/)

        您需要找到相应 COM dll 的 64 位版本。

        【讨论】:

        • 或者,除非您真的需要 64 位应用程序(可能不需要),否则只需将托管代码编译为 32 位。
        • 64 位 Windows 可以运行 32 位应用程序 (WOW64)
        【解决方案5】:

        除非您真的需要您的应用程序是 64 位的(我对此表示怀疑 - 甚至 VS 团队都选择反对),否则我建议您构建和部署为 32 位应用程序。使用 64 位的充分理由很少,而且它会使第三方驱动程序、COM 对象等变得复杂。甚至可能无法将所有这些都汇总到 64 位版本。

        【讨论】:

          【解决方案6】:

          我解决了这个问题,授予 Bin 文件夹中系统帐户的完全访问权限。

          【讨论】:

            【解决方案7】:

            所以我遇到了同样的错误。我用的是win64。

            1. APCpdf.NEET64.exe 运行它(如果您的系统中没有它)
            2. 转到 VS(任何版本)右键单击您的解决方案并添加参考
            3. 点击COM选项卡,找到APCpdf.NET PDF生成库
            4. 点击添加,清理您的解决方案并重新构建它。

            这些是我为解决我的问题而采取的步骤。希望它有所帮助:-)

            【讨论】:

              猜你喜欢
              • 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
              相关资源
              最近更新 更多