LoadError:无法打开库'libcurl'

时间:2018-10-19 20:36:28

标签: ruby neo4j libcurl

  • curl-7.61.1_6-win64-mingw(用于libcurl和curl)
  • windows 10操作系统内部版本:17134.346
  • java版本“ 1.8.0_191”红宝石
  • 红宝石2.4.4p296(2018-03-28修订版63013)[x64-mingw32]
  • jruby 9.2.0.0(2.5.0)2018-05-24 81156a8 Java HotSpot(TM)64位服务器VM 1.8.0_191-b12 + jit [mswin32-x86_64]上的25.191-b12

我正在尝试使用带有HTTP适配器的neo4j-core(8.1.4)gem访问neo4j数据库,并且收到以下错误。一些注意事项:

  • 该机器最初是我升级到Windows 10的8.1操作系统。但是我也尝试了全新安装。
  • 我正在使用curl-7.61.1-win64-mingw中的libcurl。我已经尝试了64位和32位版本。
  • NEO4J服务器工作正常
  • 尝试建立会话neo4j_session = Neo4j::Core::CypherSession.new(neo4j_adaptor)时出现错误
  • 我尝试安装路缘石,并且收到错误消息“找不到libcurl或curl / curl.h(RuntimeError)”。 CURB对libcurl有依赖性(我了解)。
  • curl.exe在路径中,并且效果很好。我确保包含libcurl.dll和curl.exe的路径按路径顺序位于第一个位置。
  • 我仅使用ruby执行了相同的脚本,以消除任何jruby特定的问题,但存在以下问题:(LoadError)libcurl':找不到指定的模块。
  • 我试图用RegSvr32注册dll,但是它说找不到dll。但是,DLL显然在我指定的位置。我认为这支持它是libcurls依赖项之一的想法...但不确定。

在这一点上很明显,系统找不到libcurl。所以,我:

  • 更新路径以指向libcurl.dll所在的目录
  • 我还尝试将DLL放在已知的工作路径位置
  • 查看haxx以更好地了解先决条件。没有帮助。
  • 我在libcurl-x64.dll(curl-7.61.1-win64-mingw)上使用依赖项遍历,并且在日志中得到以下内容:

    • 错误:找不到至少一个必需的隐式或转发依赖项。
    • 错误:由于隐式相关模块中缺少导出功能,至少有一个模块的导入无法解析。
    • 错误:检测到循环依赖。
    • 警告:至少找不到一个延迟负载依赖性模块。
    • 警告:由于依赖于延迟负载的模块缺少导出功能,至少有一个模块的导入未解决。

这是缺少的模块示例:

  • API-MS-WIN-CORE-CONSOLE-L3-2-0.DLL
  • API-MS-WIN-CORE-CRT-L1-1-0.DLL
  • API-MS-WIN-CORE-LARGEINTEGER-L1-1-0.DLL

考虑到机器正常工作,我想我对据报道缺少的模块数量感到惊讶。似乎根据以下内容,其中一些已作为体系结构更改的一部分被删除:https://social.msdn.microsoft.com/Forums/en-US/a28331ae-19a3-4a34-b3ba-1e8fd4430375/missing-apimswincore-dlls

Libcurl是常见的工具,所以让我感到非常惊讶的是,驴子一直很痛苦。

有什么想法吗?我现在不愿意进行干净的构建,并且在DLL网站上进行狩猎似乎还不是一个开始。

错误

 LoadError: Could not open library 'libcurl' : The operation completed successfully.
 Could not open library 'libcurl.dll' : The operation completed successfully.
 Could not open library 'libcurl.so.4' : The operation completed successfully.
 Could not open library 'libcurl.so.4.dll' : The operation completed successfully.

              block in ffi_lib at C:/jruby-9.2.0.0/lib/ruby/stdlib/ffi/library.rb:114
                           map at org/jruby/RubyArray.java:2557
                       ffi_lib at C:/jruby-9.2.0.0/lib/ruby/stdlib/ffi/library.rb:84
                 <module:Curl> at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/ethon-0.11.0/lib/ethon/curls/settings.rb:7
                <module:Ethon> at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/ethon-0.11.0/lib/ethon/curls/settings.rb:2
                        <main> at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/ethon-0.11.0/lib/ethon/curls/settings.rb:1
                       require at org/jruby/RubyKernel.java:970
                       require at C:/jruby-9.2.0.0/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:59
               <module:(root)> at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/ethon-0.11.0/lib/ethon/curl.rb:1
                 <module:Curl> at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/ethon-0.11.0/lib/ethon/curl.rb:27
                        <main> at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/ethon-0.11.0/lib/ethon/curl.rb:13
                       require at org/jruby/RubyKernel.java:970
                       require at C:/jruby-9.2.0.0/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:59
                        <main> at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/ethon-0.11.0/lib/ethon/curl.rb:8
                       require at org/jruby/RubyKernel.java:970
                       require at C:/jruby-9.2.0.0/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:59
                        <main> at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/ethon-0.11.0/lib/ethon.rb:1
                       require at org/jruby/RubyKernel.java:970
                       require at C:/jruby-9.2.0.0/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:59
               block in (root) at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/ethon-0.11.0/lib/ethon.rb:15
               block in (root) at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/typhoeus-1.3.0/lib/typhoeus.rb:1
                        (root) at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/typhoeus-1.3.0/lib/typhoeus.rb:2
                        (root) at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/neo4j-core-8.1.4/lib/neo4j/core/cypher_session/adaptors/http.rb:1
                          HTTP at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/neo4j-core-8.1.4/lib/neo4j/core/cypher_session/adaptors/http.rb:20
   block in faraday_connection at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/neo4j-core-8.1.4/lib/neo4j/core/cypher_session/adaptors/http.rb:162
                    initialize at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/faraday-0.15.3/lib/faraday/connection.rb:89
                           new at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/faraday-0.15.3/lib/faraday.rb:70
            faraday_connection at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/neo4j-core-8.1.4/lib/neo4j/core/cypher_session/adaptors/http.rb:154
                    initialize at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/neo4j-core-8.1.4/lib/neo4j/core/cypher_session/adaptors/http.rb:117
                        <main> at import-into-neo4j.rb:11

1 个答案:

答案 0 :(得分:0)

我已经没时间了。答案是(一种可悲的)解决方法:neography

neography宝石显然避免了libcurl依赖性,这对我的存在一直造成困扰,但仍然提供了足够的抽象性。谢谢。