无法加载DLL文件“ABCpdf9-32.dll”。找不到指定的模块(HRESULT异常:0x8007007E)。

9

在32位系统上进行开发和部署成功,但在运行Windows Server 64位的生产系统上出现了多个错误:

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


2
你是在32位编译的吗?它可能是在“任何CPU”上,使用64位无法访问32位库。 - EaterOfCode
这是一个未受管控的 DLL,由 ABCpdf.dll 组件使用。非常有可能您忘记复制它了。请使用供应商的安装程序进行部署。或者按照他的手动安装说明 (概念+手动安装部分)进行操作。 - Hans Passant
7个回答

4
ABCpdf 是一款第三方库,支持32位和64位结构。软件的供应商提供了安装程序,您需要将.dll文件放置在正确的位置。当您从供应商处下载安装程序时,可以选择32位或64位安装程序进行安装,并输入密钥即可使用。从您的应用程序的角度来看,无论您是要部署到32位还是64位,只需引用abcpdf.dll,dll会自动指向正确的dll。
目前为止给出的答案都误导了您。不要通过修改应用程序来解决问题,只需在您要部署到的服务器上安装正确版本的ABCpdf。

1
我的应用程序是64位的,但一些旧模块使用32位的ABCPdf。当我尝试为使用64位ABCPdf的新模块打印PDF时,它可以正常工作并且可以打印。但是当代码尝试使用32位的旧模块打印时,就会抛出以下异常。因为只需要添加一个ABCPdf.dll。同时,您不能将ABCpdf8-32.dll直接引用到64位项目中。
我遇到了以下错误: 无法加载DLL“ABCpdf8-32.dll”:找不到指定的模块。(来自HRESULT的异常:0x8007007E)”
当我尝试添加引用时会出现以下错误。

enter image description here

尝试了一段时间后,我直接将dll添加到bin文件夹中,然后它就起作用了。权限不是唯一的问题,因为我所有的文件夹都有适当的权限。因此,如果有人遇到类似的问题,可以尝试这个方法。

1

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


0

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

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

这些是我采取的步骤来克服我的问题。希望能有所帮助 :-)


0

或者,除非你真的需要一个64位应用程序(可能不需要),否则只需将托管代码编译为32位即可。 - Scott Jones
2
64位的Windows可以运行32位应用程序(WOW64)。 - Scott Jones

0

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


0

我通过在Bin文件夹中给予System账户完全访问权限来解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接