9

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

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

4

7 回答 7

4

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

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

于 2014-09-02T04:05:51.963 回答
1

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

于 2014-11-20T15:06:33.593 回答
1

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

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

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

在此处输入图像描述

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

于 2017-03-16T00:17:24.797 回答
0

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

于 2013-05-16T23:06:03.340 回答
0

我解决了它,赋予 Bin 文件夹中系统帐户的完全访问权限。

于 2014-11-18T15:38:49.730 回答
0

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

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

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

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

于 2013-05-16T13:02:33.230 回答
0

所以我得到了同样的错误。我正在使用win64。

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

这些是我为克服我的问题而采取的步骤。希望能帮助到你 :-)

于 2019-11-07T17:14:06.190 回答