2012-05-12 3 views
1

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

#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から関数を適切にロードするにはどうすればよいですか? package.loadlib's documentationの最初の2つの文から

答えて

2

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

(強調追加)

これは、funcnameを実行しません。あなたが呼び出すための関数として返すだけです。

package.loadlib("LuaTestLib.dll", "init")() 
+1

名前は「_init」またはその他のバリエーションであることに注意してください。 – lhf

関連する問題