2013-02-15 54 views
2

我想在導入類時使用Luabind的屬性。該定義是正確的,這個我相信,但是當我呼籲的屬性,例如,如果它是一個字符串或數字將其打印出來,我得到這樣的事情如何讓Luabind屬性起作用?

功能:009EC440

現在我不知道爲什麼會發生這種情況,但是我在互聯網上四下張望,發現幾個人有同樣的問題。他們說,你應該建立Luabind與這些參數:

的bjam工具集= MSVC 9.0變異=調試線程=多鏈接=共享定義= _BIND_TO_CURRENT_VCLIBS_VERSION

現在,我已經試過了,但我仍然得到同樣的錯誤。還有一點需要注意的是,我使用的是MSVC 2012,所以我試圖用toolset = msvc-11.0來構建它,但是仍然無濟於事。如果您不使用Boost構建來構建您的項目,我已經閱讀過您需要定義LUABIND_DYNAMIC_LINK的信息,這也是我在包含Luabind之前完成的。這仍然導致了這個錯誤。我也試圖自己構建Luabind,但遇到了連接它的麻煩,因爲它引發了許多符號錯誤(我不確定在哪裏定義LUABIND_DYNAMIC_LINK,所以如果有人知道這可能會解決問題)。有誰知道如何解決這個問題?


下面是聲明的屬性代碼:像這樣被訪問

luabind::module(luaState)[ 
luabind::class_<Weapon>("Weapon") 
    .def(luabind::constructor<float, float>()) 
    .def_readwrite("onFire", &Weapon::onFireFunc) 
    .def_readonly("modifier", &Weapon::modifier) 
]; 

他們正在嘗試,用的武器是因爲它的構造函數聲明的武器類的一個實例:

print(weapon.modifier) 
weapon.onFire = onFire 

靜態鏈接的作品,但我想,使其與動態鏈接工作,全光照克這些參數:

的bjam工具集= MSVC-9.0變體=調試線程=多連桿=靜態限定= _BIND_TO_CURRENT_VCLIBS_VERSION

回答

1

我對VS2008同樣的問題。 (這是帖子後6 mos,但可能會幫助其他人

我通過添加LUABIND_DYNAMIC_LINK預處理器指令來修復它。

項目 - >屬性 - > C/C++ - >預處理器

添加LUABIND_DYNAMIC_LINK到的預處理器定義列表。

我使用您在帖子頂部的相同bjam命令構建了luabind。