32位系统上的开发和部署成功,但运行Windows Server 64位的生产系统导致了多个错误:
Exception System.DllNotFoundException无法加载DLL “ABCpdf9-32.dll”。找不到指定的模块(例外 来自HRESULT:0x8007007E)
答案 0 :(得分:4)
ABCpdf是第三方库,支持32位和64位架构。 .dll旨在使用软件供应商提供的安装程序安装到位。从供应商下载安装程序时,选择32位安装程序或64位安装程序,然后安装它,然后输入密钥,然后关闭。从您的应用程序的角度来看,无论您是要部署到32位还是64位,都只需引用abcpdf.dll,并且dll会将您指向正确的dll。
到目前为止,答案误导了你。不要通过更改应用程序来解决问题,只需在要部署的服务器上安装正确版本的ABCpdf。
答案 1 :(得分:1)
只有在所有开发人员和服务器计算机上安装供应商提供的软件时,问题才会得到解决。
答案 2 :(得分:1)
我的应用程序是64位,一些旧模块使用.32位ABCpdf。当我尝试为使用64位ABCpdf的新模块打印pdf时,它可以工作和打印。但是当代码尝试使用32位的旧模块进行打印时,它会抛出异常。因为只添加了一个ABCpdf.dll。此外,您不能直接将ABCpdf8-32.dll引用到64位项目中。
我收到的错误是: 无法加载DLL' ABCpdf8-32.dll':找不到指定的模块。 (HRESULT异常:0x8007007E)"
当我尝试添加引用后发生错误。
经过一段时间的尝试后,我直接将dll添加到bin文件夹中并且工作正常。权限不仅是问题,因为我的所有文件夹都有适当的权限。所以,如果有人有类似的问题可以试试这个。
答案 3 :(得分:0)
ABCpdf是一个具有非托管代码的COM dll吗?在这种情况下,它无法在64位平台上运行。下面给出的文章解释了这一点(检查它的最后几位)
此外,我还要确保ABCpdf dll不依赖于任何其他32位dll。您可以使用Dependency Walker对此进行测试(http://www.dependencywalker.com/)
您需要找到相应COM dll的64位版本。
答案 4 :(得分:0)
除非你真的需要你的应用程序是64位(我怀疑它 - 即使VS团队选择反对),我建议你只需构建和部署为32位应用程序。 64位是没有什么好理由的,它使第三方驱动程序,COM对象等等变得复杂。甚至可能无法对所有这些的64位版本进行舍入。
答案 5 :(得分:0)
我解决了它,为Bin文件夹中的系统帐户提供了完全访问权限。
答案 6 :(得分:0)
所以我遇到了同样的错误。我正在使用win64。
这些是我克服问题所遵循的步骤。希望对您有所帮助:-)