2012-05-12 52 views
1

我正試圖通過與luabind這裏的教程,http://www.rasterbar.com/products/luabind/docs.html,但我無法加載庫。我目前使用lua的5.1版本,所以我相信我會使用package.loadlib而不是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的函數?

回答

2

package.loadlib's documentation前兩句:

動態鏈接與C庫libname主機程序。在該庫內部,查找函數funcname將此函數作爲C函數返回

(強調)

這並不執行funcname。它只是將它作爲函數返回給您調用。你仍然必須稱之爲:

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

請注意名稱可能是'_init'或其他一些變體。 – lhf