Tutorial Binder Lua
Transcrição
Tutorial Binder Lua
31/8/2010 tuto:constr_binder_lua - Visual Virtual Construção de binder para Lua Introdução Tutorial para elaboração de um binder para lua. Pré-requisitos Sistema Operacional XP Microsoft Visual C++ Studio 2005 Express Versão 5.1.3 de lua Versão 1.0.9.2 de ToLua++ Procedimentos com o Microsoft Visual C++ Studio 2005 Express 1. Crie um projeto de nome exemplo no Visual C++ do tipo Class Libray 2. Remova todos os arquivos criados com o projeto 3. Dentro da pasta do projeto exemplo crie as seguintes pastas: lib, bin, include, src. 4. Na pasta include coloque os seguintes arquivos. 1. De Lua: lauxlib.h lua.hpp lua.h lualib.h luaconfig.h http://192.168.0.2/wiki/doku.php?id=… 1/4 31/8/2010 tuto:constr_binder_lua - Visual Virtual 2. De ToLua++: tolua++.h 5. Altere no arquivo “tolua++.h” o trecho: #ifndef TOLUA_API #define TOLUA_API extern #endif por #ifndef TOLUA_API #define TOLUA_API extern #define TOLUA_API1 extern "C" _declspec(dllexport) #endif 6. Na pasta lib coloque os seguintes arquivos de Lua: lua5.1.lib 7. Na pasta bin coloque os seguintes arquivos de Lua: lua5.1.dll 8. Adicione três arquivos ao projeto exemplo na pasta src: binder.h binder.cpp luabinder.cpp 9. No arquivo “binder.h” escreva o seguinte código: int teste(); 10. No arquivo “binder.cpp” escreva o seguinte código: #include "binder.h" int teste(){return 5;} 11. Execute tolua++ sobre o arquivo binder.h(veja o item Procedimentos com ToLua++). 12. Coloque o resultado no arquivo luabinder.cpp. 13. Acrescente a seguinte declaração ao arquivo “luabinder.cpp”: #include "binder.h" 14. Adicione os projetos tolua++ e tolualib a sua solução. 15. Configure os projetos como Release. http://192.168.0.2/wiki/doku.php?id=… 2/4 31/8/2010 tuto:constr_binder_lua - Visual Virtual 16. No projeto exemplo, Properties, C/C++, General, Additional Include Directories, acrescente o valor include. 17. no projeto exemplo, Properties, C/C++, Precompiled Headers, Create/Use Precompiled Headers, acrescente o valor Not Using Precompiled Headers. 18. No projeto exemplo, Properties, Linker, General, Additional Libray Directories, acrescente o valor ../exemplo/lib. 19. No projeto exemplo, ProperTies,Linker, Input, Addtional Dependencies, acrescente o valor “lua5.1.lib”. Clique em ok. 20. Torne o projeto exemplo depende de tolualib. 21. Compile a solução. Procedimentos com o ToLua++ 1. Na pasta include do projeto tolua++ coloque os seguintes arquivos. 1. De Lua: lauxlib.h lua.hpp lua.h lualib.h luaconfig.h 2. Na pasta lib do projeto tolua++ coloque os seguintes arquivos: 1. De Lua: lua5.1.lib 3. Compile o projeto tolua++. 4. Crie um arquivo binder.pkg(arquivos que contém apenas a interface) e copie o conteúdo de binder.h para ele. 5. Coloque o aplicativo tolua++ numa pasta junto com o arquivo binder.pkg. 6. Execute no prompt de comando o seguinte comando: >tolua++.exe -n LuaBinder -o luabinder.cpp binder.pkg 7. Modifique esse trecho: #if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM >= 501 TOLUA_API int luaopen_LuaBinder (lua_State* tolua_S){return tolua_LuaBinder_open(tolua_S); }; #endif por http://192.168.0.2/wiki/doku.php?id=… 3/4 31/8/2010 tuto:constr_binder_lua - Visual Virtual #if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM >= 501 TOLUA_API1 int luaopen_LuaBinder (lua_State* tolua_S){return tolua_LuaBinder_open(tolua_S); }; #endif Procedimentos com o Lua: 1. Crie um arquivo lua chamado exemplo. 2. Acrescente as seguintes declarações: EXEMPLO = "exemplo.dll" --inicia binder.h init_LuaBinder = assert(pachage.loadlib(EXEMPLO,"luaopen_LuaBinder")); init_LuaBinder(); print(teste()); 3. Coloque os arquivos abaixo na mesma pasta lua5.1.exe lua5.1.dll exemplo.dll exemplo.lua 4. Execute o aplicativo lua5.1.exe. 5. Digite: require 'exemplo'. http://192.168.0.2/wiki/doku.php?id=… 4/4