1

ここhttp://www.rasterbar.com/products/luabind/docs.htmlでluabindを使用してチュートリアルを実行しようとしていますが、ライブラリのロードに問題があります。私は現在luaのバージョン5.1を使用しているので、loadlibの代わりにpackage.loadlibを使用すると思います。私はこれである単純なdllを作りました:

#include <iostream>
#include <luabind\luabind.hpp>

void greet()
{
std::cout << "Hello world!\n";
}

extern "C" int init(lua_State* L)
{
luabind::open(L);

luabind::module(L)
    [
        luabind::def("greet", &greet)
    ];


return 0;
}

これは問題なく構築されます。ただし、このコードを実行しようとすると、luaでエラーが発生します。

package.loadlib("LuaTestLib.dll", "init")
greet()

あいさつはゼロだと書いてあります。dllから関数を正しくロードするにはどうすればよいですか?

4

1 に答える 1

2

package.loadlibのドキュメントの最初の2文から:

ホストプログラムをCライブラリに動的にリンクしますlibname。このライブラリ内で、関数funcnameを探し、この関数をC関数として返します

(強調を追加)

これは実行さ れませんfuncname。それは単にあなたが呼び出すための関数としてそれを返します。あなたはまだそれを呼び出す必要があります:

package.loadlib("LuaTestLib.dll", "init")()
于 2012-05-12T06:36:05.803 に答える