Plop,
Cela fait bientôt quelques heures que je m'arrache les cheveux à la recherche d'informations sur comment exposer une instance de classe c++ dans une script lua et pas moyen de trouver.
Je sais comment exposer une fonction statique, permettre au script Lua de construire une class c++ mais pas ce que je veux.
Ce que j'aimerais faire exactement c'est accèder une instance de LuaClass de façon globale depuis le script lua.
Le but c'est d'avoir quelque chose dans le genre bien que je ne soit pas sur de la syntaxe.
Merci d'avance,
Code : Sélectionner tout - Visualiser dans une fenêtre à part Plop.debug()
Je rajoute quand même mon code au cas ou.
main.cpp
LuaScript.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 # include "LuaScript.hpp" # include "LuaClass.hpp" int main(int ac, char **av) { (void)ac; (void)av; LuaScript Test; LuaClass Plop("Debug"); Test.loadFile("files/test.lua"); Test.call(); return 0; }
LuaScript.hpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 #include "LuaScript.hpp" LuaScript::LuaScript() { _state = luaL_newstate(); luaL_openlibs(_state); } LuaScript::~LuaScript() { } bool LuaScript::loadFile(std::string param) { if (luaL_loadfile(_state, param.c_str()) != LUA_OK) { LuaError(); return false; } else return true; } void LuaScript::call() { if (lua_pcall(_state, 0, LUA_MULTRET, 0) != LUA_OK) LuaError(); } void LuaScript::LuaError() const { const char *message = lua_tostring(_state, -1); std::cout << message << std::endl; lua_pop(_state, 1); }
LuaClass.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #ifndef LUA_LOADER_LUASCRIPT_HPP #define LUA_LOADER_LUASCRIPT_HPP # include <lua5.2/lua.hpp> # include <string> # include <iostream> class LuaScript { private: lua_State *_state; public: LuaScript(); ~LuaScript(); bool loadFile(std::string); void call(); void LuaError() const; }; #endif //LUA_LOADER_LUASCRIPT_HPP
LuaClass.hpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include "LuaClass.hpp" LuaClass::LuaClass(std::string value) { _value = value; } LuaClass::~LuaClass() { } void LuaClass::debug() const { std::cout << "Test : " << _value << std::endl; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #ifndef LUA_LOADER_LUACLASS_HPP #define LUA_LOADER_LUACLASS_HPP # include <iostream> class LuaClass { private: std::string _value; public: LuaClass(std::string); ~LuaClass(); void debug() const; }; #endif //LUA_LOADER_LUACLASS_HPP
Partager