1

LuaBind を使用して単純なクラスを Lua にエクスポートしようとしています。ほぼ同じ方法を示した 2 つのサイトからコードを取得しましたが、まだ失敗しています。

// 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;
}

そのコードを実行すると、luabind::module によって次のランタイム エラーが発生し、デバッグ モードでは他の情報はありません。

Lua Playground.exe の 0x690008f5 で未処理の例外: 0xC0000005: アクセス違反。

4

1 に答える 1

1

この Web サイトから入手できるバイナリとサンプル VS2008 ソリューションから始めることをお勧めします。実行しようとしているのとまったく同じサンプル コード (タイプミスを除く) が含まれており、私のマシンでは問題なく動作しました。それでもうまくいかない場合は、Lua コミュニティの助けが必要です。これを診断するには、おそらくミニダンプが必要ですが、例外メッセージだけでは十分ではありません。

于 2009-12-24T15:05:51.807 に答える