0

プログラムを実行するたびに、コンソールに何も出力されません。これは、クラスを使用せず、すべてを main() で実行する場合にうまく機能します。

クラスに置いた瞬間、問題が発生し始めます。私は何を間違っていますか?

using namespace luabridge;

myClass::myClass()
{
    lua_State* L = luaL_newstate();
    luaL_openlibs(L);
    getGlobalNamespace(L).beginClass<myClass>("myClass").addFunction("printMessage", &myClass::printMessage).endClass();
    luaL_dofile(L, "test.lua");
    lua_pcall(L, 0, 0, 0);
}

void myClass::printMessage(const std::string& s)
{
    std::cout << s << std::endl;
}

私のluaスクリプト「test.lua」

私はもう試した

c = myClass()
c:printMessage("You can call C++ functions from Lua!")

myClass:printMessage("You can call C++ functions from Lua!")

printMessage("You can call C++ functions from Lua!")
4

1 に答える 1

0

必要なことを行うには、次の 3 つのオプションがあります。

  1. lua でインスタンスを作成しmyClass、最初の例のように使用する場合は、次の後にコンストラクターもエクスポートする必要がありますbeginClass

    .addConstructor <void (*) (void)> ()

  2. C++ でインスタンスを構築し、myClass他の関数を使用して lua に渡します。その後、lua は次のようにアクセスできます。

    myClassInstance:printMessage("Hello")

  3. 静的printMessageにして、次のようにエクスポートします。

    .addStaticFunction("printMessage", &myClass::printMessage)

    次に、次を使用して lua で呼び出すことができます。

    myClass.printMessage("Hello")

呼び出しの.との違いに注意してください。static のようにアクセスし、インスタンスのようにアクセスします。:.:

于 2014-10-06T17:33:57.533 に答える