この記事は公開から3年以上経過しています。
SQLiteのextension-functionsのバイナリを生成する場合、公式ではMinGwのgccを利用することになっていますが、今回はこれをVisualStudio2017のVisualC++を使ってビルドして利用する方法を紹介します。
本記事ではVisualStudio2017のVisualC++64bitビルド(Cコンパイラ)で説明しています。
本記事の対応方法は公式にアナウンスされている方法ではありません。利用にあたっては各自の責任でご判断頂き、十分に注意して利用してください(At your own risk)。
用意するもの
SQLiteの公式ソースのヘッダファイル
- sqlite3.h
- sqlite3ext.h
SQLiteへの寄稿ファイルのCソースファイル
- extension-functions.c
ビルド手順
-
上記3ソースを適当なフォルダにまとめて配置する。
-
extension-functions.c
をテキストエディタで開き、int sqlite3_extension_init
関数に__declspec(dllexport)
を追加(関数をエクスポート)する。 -
スタートメニューから
VS 2017 用 x64 Native Tools コマンド プロンプト
を開き、カレントディレクトリを手順1のフォルダに移動する。 -
以下のコマンドでDLLをビルドする(※コマンドにバックスラッシュが表示されている場合は半角円マーク記号と見做してください)。
cl /LD /I .\ .\extension-functions.c
-
ビルドされた
extension-function.dll
を任意のフォルダに配置する(SQLite3.dll
と同じディレクトリなど)。
ロード方法
以下のSQLコマンドにより前手順でビルドしたSQLite拡張DLLをロードします(フルパスで指定)。
※お使いのSQL実行環境によってはload_extension
の使用を明示的に有効とする設定が必要な場合があります。
select load_extension("DLLのインストール先ディレクトリ\extension-functions.dll");
拡張ライブラリのロードに成功すると
load_extension("DLLのインストール先ディレクトリ\extension-functions.dll")
のように上述のSQL実行結果が返されます。
参考ウェブサイトなど
- SQLite C Interface
Load An Extension
以上です。