2009-12-24 2 views
1

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.

Répondre

1

Je vous encourage à commencer avec les binaires et l'exemple de solution VS2008 disponible auprès de this website. Il a le même exemple de code que vous essayez d'exécuter (moins les fautes de frappe) et cela a bien fonctionné sur ma machine. Si cela ne fonctionne toujours pas, vous aurez besoin de l'aide de la communauté Lua. Un minidump est probablement nécessaire pour les aider à diagnostiquer cela, juste le message d'exception ne suffit pas.

+0

Je dirais, plus spécifiquement, la communauté Luabind. Bienvenue sur la liste de diffusion: https://lists.sourceforge.net/lists/listinfo/luabind-user –

+0

De quoi parlez-vous? – Overv

+0

Ceux dans le billet de blog lié. –

Questions connexes