无法加载DLL’ABCpdf9-32.dll’。 找不到指定的模块(HRESULTexception:0x8007007E)

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

exceptionSystem.DllNotFoundException无法加载DLL’ABCpdf9-32.dll’。 找不到指定的模块(HRESULTexception:0x8007007E)

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

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

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

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

我收到错误:无法加载DLL’ABCpdf8-32.dll’:找不到指定的模块。 (HRESULTexception:0x8007007E)“

当我试图添加引用后发生错误。

在此处输入图像描述

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

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位(我怀疑它 – 甚至VS团队选择反对),我建议你只需构建和部署为32位应用程序。 64位是没有什么好理由的,它使第三方驱动程序,COM对象等等变得复杂。甚至可能无法对所有这些的64位版本进行舍入。

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