2016-11-13 12 views
0

Windows 10上でlsqlite3 0.9.4をlua 5.3.1用にビルドしようとしています。
しかし、私はそれについてどうやって進むべきかについて完全にはわかりません。
rockspecファイルがありますが、これは(デフォルトではluarocksが5.1用に設定されているため)、またはVisual Studio Developerコンソールで手動で行う必要があるかどうかはわかりません。
残念ながら、私は何をすべきかについて多くの知識を持っていません。
私の推測では、試行錯誤は私がやったことであり、これが正しいかどうかわからないので、私を許してください。lua.5.3.1用のlsqlite3のビルド方法

cl /nologo /MD /O2 -c -Folsqlite3.obj -I"C:/Lua/5.3.1/include" lsqlite3.c -Dluaopen_lsqlite3=luaopen_lsqlite3complete 

(それが動作するように失敗したときに、基本的luarocksからこのコマンドを得た)
そして私はこれをしなかった:

私が一種の未解決の外部sqlite3のシンボルエラーの束を与えた
LINK.EXE /DLL /OUT:lsqlite3.dll lsqlite3.obj 

私はちょうどsqlite3に含める場所がわかりません。

これを正しく行うためのアドバイスはありますか?

答えて

0

最初。それはsqilte soureceと一緒に出荷されます。 しかし、luarocksには2つのモジュールがあります。 1つは別のSQLiteライブラリが必要です。 そして、1つのファイルにsqliteとlsqliteをビルドします。したがって、それには外部デープはありません。 また、lsqlite3はWindwosにバグがあると思います。それはsqlite3_temp_directoryへのアクセスを提供します。しかし、これは、ホストアプリケーションがそれを定義すべきWindows上では定義されていません。ですから、lsqliteはifdefを使ってこれを無視してみてください。しかし、MSコンパイラで定義されていないWIN32マクロをテストします。 2つの方法があります。 1.編集しrockspec /ファイルを作成し、WIN32 2.編集・ソースを定義し、これはLuaRocksから出力される代わりに

_WIN32を使用するコマンド

d:\tmp\lsqlite3_fsl09x>luarocks make lsqlite3-0.9.4-0.rockspec 
cl /nologo /MD /O2 -c -Folsqlite3.obj -Ic:\luarocks\x86\5.1\include\ lsqlite3.c -DLSQLITE_VERSION="0.9.4" -Dluaopen_lsqlite3=luaopen_lsqlite3complete lsqlite3.c 
cl /nologo /MD /O2 -c -Fosqlite3.obj -Ic:\luarocks\x86\5.1\include\ sqlite3.c -DLSQLITE_VERSION="0.9.4" -Dluaopen_lsqlite3=luaopen_lsqlite3complete sqlite3.c 
link -dll -def:lsqlite3complete.def -out:lsqlite3complete.dll c:\luarocks\x86\5.1\lib\lua51.lib lsqlite3.obj sqlite3.obj 
Microsoft (R) Incremental Linker Version 10.00.30319.01 
Copyright (C) Microsoft Corporation. All rights reserved. 

    Creating library lsqlite3complete.lib and object lsqlite3complete.exp 
cl /nologo /MD /O2 -c -Folsqlite3.obj -Ic:\luarocks\x86\5.1\include\ lsqlite3.c -DLSQLITE_VERSION="0.9.4" -Ic:/luarocks/x86/external/include 
lsqlite3.c 
link -dll -def:lsqlite3.def -out:lsqlite3.dll c:\luarocks\x86\5.1\lib\/lua51.lib lsqlite3.obj -libpath:c:/luarocks/x86/external/lib sqlite3.lib 
Microsoft (R) Incremental Linker Version 10.00.30319.01 
Copyright (C) Microsoft Corporation. All rights reserved. 

    Creating library lsqlite3.lib and object lsqlite3.exp 
lsqlite3 0.9.4-0 is now installed in c:\luarocks\x86\5.1\systree (license: MIT/X11) 

作るしかし、あなたは別途のSQLite librayを持っていない場合は、単に削除することができます1つのモジュールはrockspecを生成し、1つだけを使用します(また、モジュールの名前を変更します)。

build = { 
    type = "builtin", 
    modules = { 
     lsqlite3 = { 
      sources = { "lsqlite3.c", "sqlite3.c" }, 
      defines = {'LSQLITE_VERSION="0.9.4"'} 
     } 
    }, 
    copy_directories = { 'doc', 'examples' } 
} 

これはLuaRocksための出力であるがluarocksではなくlua51.libのlua5.1.dll使用しようとして保たれているため、コマンド

d:\tmp\lsqlite3_fsl09x>luarocks make lsqlite3-0.9.4-0.rockspec 
cl /nologo /MD /O2 -c -Folsqlite3.obj -Ic:\luarocks\x86\5.1\include\ lsqlite3.c -DLSQLITE_VERSION="0.9.4" lsqlite3.c 
cl /nologo /MD /O2 -c -Fosqlite3.obj -Ic:\luarocks\x86\5.1\include\ sqlite3.c -DLSQLITE_VERSION="0.9.4" sqlite3.c 
link -dll -def:lsqlite3.def -out:lsqlite3.dll c:\luarocks\x86\5.1\lib\/lua51.lib lsqlite3.obj sqlite3.obj 
Microsoft (R) Incremental Linker Version 10.00.30319.01 
Copyright (C) Microsoft Corporation. All rights reserved. 

    Creating library lsqlite3.lib and object lsqlite3.exp 
lsqlite3 0.9.4-0 is now installed in c:\luarocks\x86\5.1\systree (license: MIT/X11) 
+0

は、まあ、私は手動でコマンドを通過するこれを行うために管理します。 私のビルドは.libファイルをビルドしていないので、それを行う方法が100%分からないので、lua 5.3.1で動作するかどうかを確認する必要があります。 – Zelly

+0

prebuild sqliteライブラリがあるhttps://github.com/moteus/lua-windows-environment設定を試すことができます。また、Lua-Sqlite3は問題なくWindowsにインストールされます。 – moteus

関連する問題