2016-11-13 3 views
0

Je cherche à construire lsqlite3 0.9.4 pour lua 5.3.1 sur Windows 10.
Cependant, je ne suis pas entièrement sûr de savoir comment s'y prendre.
Il existe un fichier rockspec mais je ne suis pas sûr si je devrais essayer de le faire (car par défaut je pense que luarocks est configuré pour 5.1) ou manuellement avec la console Visual Studio Developer.
Je n'ai malheureusement pas beaucoup de connaissances sur ce que je devrais faire. De mes deviner googling/essai et erreur voici ce que j'ai fait, et je n'ai aucune idée si c'est correct alors pardonnez-moi.Comment puis-je construire lsqlite3 pour lua.5.3.1

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

(Fondamentalement obtenu cette commande à partir luarocks quand il ne fonctionnait pas)
Et puis je l'ai fait:

LINK.EXE /DLL /OUT:lsqlite3.dll lsqlite3.obj 

Ce qui m'a donné un tas d'erreurs de symboles de sqlite3 externes non résolues que je sorte de prévu, je ne suis pas sûr où inclure dans sqlite3 ..

Un conseil pour bien faire ceci?

Répondre

0

Premier. Il est livré avec sqilte lui-même. Mais luarocks a 2 modules. On a besoin d'une bibliothèque SQLite séparée. Et on construit sqlite et lsqlite en un seul fichier. Donc, il n'a pas de deps externes. Aussi je pense que lsqlite3 a un bug sur Windwos. Il donne accès à sqlite3_temp_directory. Mais ce n'est pas défini sur Windows où l'application hôte doit le définir. Donc, lsqlite essaie simplement d'utiliser ifdef pour l'ignorer. Mais il test WIN32 macro qui n'a pas défini sur le compilateur MS. Donc vous avez 2 façons. 1. Modifier rockspec/Créer un fichier et définir WIN32 2. Modifier la source et utiliser à la place _WIN32

Ceci est sortie de LuaRocks commande make

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) 

Mais si vous n'avez pas libray SQLite séparé vous pouvez simplement supprimer un module forme rockspec et utilise un seul (et aussi renommer le module).

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

Ceci est sortie pour LuaRocks commande make

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

Eh bien, je réussi à faire passer manuellement à travers les commandes parce luarocks continué à essayer d'utiliser lua5.1.dll au lieu de lua51.lib. Maintenant, j'ai besoin de voir si ça fonctionne avec lua 5.3.1, parce que ma construction n'a pas compilé un fichier .lib, et je ne suis pas sûr à 100% comment le faire. – Zelly

+0

Vous pouvez essayer ma https://github.com/moteus/lua-windows-environment configuration qui a la bibliothèque de sqlite prebuild. Aussi Lua-Sqlite3 s'installe sur Windows sans problème. – moteus