J'essaie d'exporter une classe simple vers Lua en utilisant LuaBind. J'ai pris le code de deux sites qui montraient à peu près la même manière de le faire, mais ça échoue toujours.Violation d'accès lors de l'exportation d'une classe C++ vers Lua en utilisant LuaBind
// Default headers
#include <iostream>
#include <string>
// Lua headers
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#include "luabind/luabind.hpp"
// Sample class
class NumberPrinter
{
public:
NumberPrinter(int number) : m_number(number) {}
void print() { std::cout << m_number << "\n"; }
private:
int m_number;
};
int main() {
// Create Lua state and load sample file
lua_State *luaState = lua_open();
luabind::open(luaState);
// Set up bind to number class
luabind::module(luaState) [
luabind::class_<NumberPrinter>("NumberPrinter")
.def(luabind::constructor<int>())
.def("print", &NumberPrinter::print)
];
// Use the class in Lua
luaL_dostring(luaState,
"Print2000 = NumberPrinter(2000)\n"
"Print2000:print()\n"
);
// Clean up Lua state
lua_close(luaState);
getchar();
return 0;
}
Lors de l'exécution de ce code, luabind :: le module provoque l'erreur d'exécution suivante et n'a pas d'autres informations en mode débogage:
exception non gérée à 0x690008f5 dans Lua Playground.exe: 0xC0000005: Accès violation.
Je dirais, plus spécifiquement, la communauté Luabind. Bienvenue sur la liste de diffusion: https://lists.sourceforge.net/lists/listinfo/luabind-user –
De quoi parlez-vous? – Overv
Ceux dans le billet de blog lié. –