如何解决 'libcurl' not found with Rails on Windows

How to solve 'libcurl' not found with Rails on Windows

这让我很头疼。我正在继续一个从 Linux 开始的 Rails 项目,当我 运行 Puma 在 Ruby Mine:

上时,我一直得到这个
Error:[rake --tasks] DL is deprecated, please use Fiddle
rake aborted!
LoadError: Could not open library 'libcurl': The specified module could not be found.
Could not open library 'libcurl.dll': The specified module could not be found.
Could not open library 'libcurl.so.4': The specified module could not be found.
Could not open library 'libcurl.so.4.dll': The specified module could not be found.
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/ffi-1.9.14-x86-mingw32/lib/ffi/library.rb:147:in `block in ffi_lib'
[...]

现在,我尝试了什么?

我重新启动了机器,但我一直看到同样的错误。

我不知道该怎么办。 如何在 Windows 上成功安装 libcurl 以便与 Rails

一起使用

如果您在 Windows 10 上使用 WSL(确保更新到 Ubuntu 16.04),以下说明对我来说非常有用。但是,您可能需要完全擦除已安装的内容。 bash:

以内
sudo apt-get update
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev postgresql-client-common postgresql-client libpq-dev

然后为 rbenv 构建我们的路径和插件目录:

cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL

终于到了ruby:

rbenv install 2.4.1
rbenv global 2.4.1

然后打包器:

gem install bundler
rbenv rehash

现在我们的先决条件:

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs

最后 Rails:

gem install rails
rbenv rehash

我遇到了同样的问题并尝试了 OP 列出的相同步骤。在打破我的头脑,诅咒 windows 的存在一段时间并几乎说服客户端转移到 nix 服务器之后,我想出了我从 https://curl.haxx.se/ 下载的 libcurl.dll(如所有建议的那样)相关帖子)已损坏。

下载了这里提供的 http://www.dlldownloader.com/libcurl-dll/ 中提琴 ffi 能够加载这个。

希望这对面临此问题的其他人有所帮助

我想使用 wpscan,但出现 libcurl 错误 好的,如果你也遇到同样的错误,那么我会以一种非常简单的方式尝试给出解决方案。

如果您的 windows 是 32 位的,只需将 libcurl.dll 文件复制到 system32,

如果你的windows64位复制到syswo64.

祝你好运。

我刚刚在 Windows 7 x64 和 上遇到了同样的问题。 (和你一样,我尝试了很多我认为应该起作用但没有起作用的东西。)

有效的是:

  • 从此处找到的其中一个包中取出一个 libcurl.dllhttps://curl.haxx.se/download.html#Win64,并将其放在 PATH.

    (Link 已更新,但最初指向版本 7.40)

  • 我就放在\ruby24\bin\下面
  • 也许对你来说是 C:\Ruby24-x64\bin

(以下是我试过但没有用的方法:)

  • 换上PATH:从当前Curl Download Wizard得到cygcurl-4.dll
  • 将上面的 cygcurl-4.dll 重命名为 libcurl.dll 并放在 PATH
  • 正在安装 msys2 软件包 libcurl-devel 7.57.0-1
  • msys-curl-4.dll(从在 msys64\usr\bin 找到的 msys2)重命名为 libcurl.dll

I didn't try building curl / libcurl from the latest source because I already have the latest according to pacman -Ss libcurl:

msys/libcurl 7.57.0-1 (libraries) [installed]
Multi-protocol file transfer library (runtime)

msys/libcurl-devel 7.57.0-1 (development) [installed]
Libcurl headers and libraries

在这些其他问题中有关此的更多详细信息:

  • Typhoeus Windows installation

  • Rails Typhoeus Curl Trouble

  • how to install libcurl on windows 7 64bit

对我有用的答案 (W10/Ruby2.6.0) 是:

  1. 从以下URL下载cURL:https://curl.haxx.se/windows/(我选择64位,因为这是我使用的系统)
  2. 进入存档并浏览到 /bin
  3. 找到libcurl_x64.dll(可能只是libcurl.dll
  4. 解压到本地驱动器
  5. 如果有 _x64 后缀
  6. ,则将其重命名为 libcurl.dll
  7. 将文件剪切并粘贴到 Ruby 安装的 /bin 目录中

嗯,这个问题是由错误中说的缺少库引起的,所以解决方案是在此处下载库:http://www.dlldownloader.com/libcurl-dll/ 并导航到 bin 下的 ruby 文件夹并拖放它在那里确保将下载的 .dll 文件重命名为这个确切的文件:libcurl.dll 否则即使之后也不会工作。

对于 运行 Ruby 2.5 on Windows 的任何人,我的解决方案与顶级解决方案类似,但是我必须移动它以将文件放在 \bin 文件夹和\bin\ruby_builtin_dlls 文件夹工作。

还有一些是我下载了64位版本,改了名字libcurl.dll。还要确保重新启动 IDE/terminal,然后再次尝试启动服务器。

对我有用的解决方案是下载 dll,保留确切名称 libcurl.dll 并将其复制到 c:\windows\system32

None 的解决方案对我有用 - 无论我尝试什么,libcurl 都无法加载。

然后我做了以下事情:

  1. 创建了一个刚刚尝试加载 dll 的迷你 Ruby 程序:
require 'ffi'

FFI::DynamicLibrary.open("libcurl", FFI::DynamicLibrary::RTLD_LAZY | FFI::DynamicLibrary::RTLD_LOCAL)
  1. 运行 procmon 并由 ruby.exe 进程和任何包含“dll”的路径过滤

结果,我看到了以下内容:

C:\Ruby27-x64\bin\libzstd.dll - 找不到名称

这让我觉得我缺少一个依赖项。 libzstd.dll 文件是 mingw-w64-x86_64-zstd 包的一部分,但幸运的是我只是把它放在其他地方的驱动器上(作为 GIMP 安装的一部分)。

我把libzstd.dll复制到C:\Ruby27-x64\bin,问题解决了。当然,我的路径中已经有 libcurl.dll(从 https://curl.haxx.se/windows 获得)