回答編集履歴

1

dlfcnについて追記

2019/03/05 11:29

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -1,4 +1,4 @@
1
- エラーの原因ですが、2019年3月4日時点での最新のsqlite3 v1.4.0では[dlおよびdlopen()(Linuxに存在するライブラリとCの関数)が必須](https://github.com/sparklemotion/sqlite3-ruby/commit/f4ffec281a2888c1e536662ac1ea740fd3f5433c)となっているのですが、MSYS2/Mingw-w64環境にはこの関数が存在しないため、必要な関数が無いと言うことでコンパイルに失敗してしまいます。sqlite3の最新版(v1.4.0)特有の問題であり、**Rubyのバージョンは関係ありません。**sqlite3のバージョンを下げない限り、Rubyのバージョンを下げても問題は解決しません。
1
+ エラーの原因ですが、2019年3月4日時点での最新のsqlite3 v1.4.0では[dlおよびdlopen()(Linuxに存在するライブラリとCの関数)が必須](https://github.com/sparklemotion/sqlite3-ruby/commit/f4ffec281a2888c1e536662ac1ea740fd3f5433c)となっているのですが、MSYS2/Mingw-w64環境には標準でこの関数が存在しない(入れる方法は後述)ため、必要な関数が無いと言うことでコンパイルに失敗してしまいます。sqlite3の最新版(v1.4.0)特有の問題であり、**Rubyのバージョンは関係ありません。**sqlite3のバージョンを下げない限り、Rubyのバージョンを下げても問題は解決しません。
2
2
 
3
3
 
4
4
 
@@ -17,3 +17,23 @@
17
17
 
18
18
 
19
19
  Ruby 2.5以上の場合は`--platform ruby`は必須です(sqlite3 1.3.13のmingw版にはRuby 2.4までしかWindows用バイナリが用意されていないため)。sqlite3側でもそのうち修正はされるとは思いますが、まだ誰もIssuesに投げていないようなので、いつ修正されるかは不明です。
20
+
21
+
22
+
23
+ ---
24
+
25
+
26
+
27
+ asmさんの情報より
28
+
29
+
30
+
31
+ ```
32
+
33
+ ridk exec pacman -S mingw-w64-x86_64-dlfcn
34
+
35
+ ```
36
+
37
+
38
+
39
+ でMSYS2上にdlfncパッケージを入れておくとコンパイルが出来ることを確認しました。1.4.0を使いたいなら、この方法の方が良いかもしれません。