无法加载 DLL 'ABCpdf9-64.dll'。指定的模块无法找到(HRESULT 异常:0x8007007E)。

4

我已经在本地机器上安装了abcPDF 9.1.1.5版本,并且一切都运行得很完美。

但是当我部署代码到Windows Server 2008 R2机器时,我遇到了这个错误。

有人能指导我可能出了什么问题吗?

我已经研究了以下文章,但对我没有用。

12

代码:

string strFileName = Invoice.InvoiceNumber;
XSettings.License = "something-something-something";
Doc m_GeneratePDF = new Doc();
m_GeneratePDF.HtmlOptions.Engine = EngineType.Gecko;
StringBuilder strBuilderHTML = new StringBuilder();
string strHTML;
strBuilderHTML.Append("<HTML>");
strBuilderHTML.Append("<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />");
strBuilderHTML.Append("<head>");
//strBuilderHTML.Append("<link href='styles/Site.css' rel='stylesheet' type='text/css' />");
strBuilderHTML.Append("</head>");
strBuilderHTML.Append("<BODY>");
strHTML = strBuilderHTML.ToString();

theID = m_GeneratePDF.AddImageHtml(strHTML);

那些与我的问题相关。


2
你需要复制一堆DLL文件。如果漏掉一个,就会出现这个错误。如果你无法理解手册中的手动安装说明,那么可以在支持请求的背面附上20美元纸币。 - Hans Passant
4个回答

1
最终,在与这个问题斗争了3天后,我解决了它。
这是我所做的: 1)我从32位机器Windows 8发布代码 2)我的服务器是Windows Server 2008 R2 64位机器。
=> 我在iis选项中启用了32位应用程序,但根据搜索结果这并没有解决我的问题。 然后我 => 设置了“加载用户配置文件”,但也没有解决我的问题。 => 然后有人告诉我,在您的服务器上给予abcPDF和abcGeco dlls完全权限,但这也没有起作用。
然后我最终从64位机器编译了我的代码,或者将64位ABCpdf和ABCGeco dll文件从bin文件夹复制到我的发布文件夹中,这最终起作用了。

我尝试了您在帖子中提到的方法,但发现 - ingredient_15939
我曾经遇到过同样的问题。我犯了一个错误,先安装了64位版本,然后再安装32位版本。结果出现了错误。但是,在IIS服务器上更改“启用32位应用程序”选项后,问题得以解决。请确保在更改后重新启动应用程序池,否则它将无法正常工作。 - Eddie

1

我想添加我的解决方案:
在服务器上安装ABCpdf(在我的情况下是“ABCpdf.NET64.exe”),就这样。(您可能可以复制一些dll文件来修复问题)

对于错误:
无法加载DLL“ABCpdf10-64.dll”:找不到指定的模块。(来自HRESULT的异常:0x8007007E)

环境(全部为x64)
生产环境: Windows Server 2012 R2 开发环境: Windows 10,Visual Studio 2015


0

这可能对此处不太有帮助。但我也曾在继承的项目中遇到过类似问题,当时一个Windows更新破坏了ASP.NET Web应用程序中非常旧的ABCPDF实现。我并不是说你应该重复这些步骤,但我在这里列出所有这些步骤,以防有人能够识别出他们可能需要做什么。此外,我使用的是ABCPDF10,但我不认为这不能适用于任何版本。

我安装了64位的ABCPDF10,然后通过每个MSI安装了32位的ABCPDF10。
然后,按照ABCPDF的说明,我手动将它们各自的C:/Program Files目录中的文件复制到我的项目的bin/目录中。但是这对我没有用,因为当我在VS2015中构建时,由于某种原因,它无法看到.DLL。
然后,我通过手动从我的项目bin/目录中删除文件,然后使用Server2012R2中的Add/Remove Apps卸载了它。
然后,我使用Nuget下载了ABCPDF,它可以构建。但我仍然需要ABCPDF.Gekco。
然后,我使用Nuget尝试安装ABCPDF.Gecko。这样下载了它,但它没有完全安装。我手动将缺少的.dll和.exe文件复制到bin/目录中,并构建了项目。
就在这个时候,我被原帖的错误信息卡住了。
对我有用的是,我保持项目和bin/目录不变,然后使用.MSI安装程序并重新安装只有x64版本到C:/,就像安装其他程序一样。我不必复制任何文件。我只需重新构建项目,就行了。

对我来说,这感觉像是注册表键/路径问题。但我不知道这是否正确。

希望这能帮助其他人。


0

对我有用的方法。

  1. 安装最新版本/错误提示缺失的版本

无法加载 DLL ‘ABCpdf12-64.dll’。指定的模块无法找到 (HRESULT 异常: 0x8007007E)

  1. 构建和运行。如果这能够正常工作,那么恭喜你,问题解决了。跳过所有其他步骤。

    • 如果不能正常工作,则应该会出现版本不匹配的错误。并且会列出它所需求的版本。进入第3步
  2. 从NuGet gallery安装正确的版本:https://www.nuget.org/packages/ABCpdf.ABCGecko/12.3.0.5

  3. 前往 ..\solution\packages\ABCpdf.[版本号]\build\ 并将 ABCpdf12-64.dll 文件复制到 ..\solution\project\Bin\

  4. 构建和运行

我亲测有效。


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