簡體   English   中英

C ++ LuaBridge嘗試索引用戶數據值(本地“自身”)

[英]C++ LuaBridge attempt to index a userdata value (local 'self')

我在框架中圍繞LuaBridge創建了一個包裝器,以便可以輕松地將LuaBridge換成其他庫。 我的某些類在框架初始化過程中已向LuaBridge注冊。 然后,我可以在Lua中輕松訪問或實例化這些類。 當我想在已經在Lua中定義的框架init中注冊的類/表上調用自定義方法時,就會出現問題。

function MyObject:OnUpdate()
  self:Init()
end

如果嘗試通過傳遞MyObject實例來調用OnUpdate,以便可以利用self,則會出現以下錯誤:

“試圖索引一個用戶數據值(本地'自我')”

如果我手動注冊MyObject而不是允許我的框架在啟動期間對其進行初始化,則它可以正常工作。 就像Lua可以解析MyObject的元表一樣,即使我可以清楚地看到它已定義。 關於Lua的確切錯誤,我似乎也找不到太多。

我發現了我的問題。 我上面提到的要注冊的類在另一個庫(DLL)中。 我為每個類生成密鑰,並將這些密鑰存儲在Lua注冊表中。 密鑰生成使用靜態模板化方法,該方法為每種類型返回靜態char的地址。 當調用代碼從DLL返回並進入我的EXE時,我正在注冊一個新類,該類繼承自DLL中一個預注冊的類。 當我查找基類的鍵時,它有所不同,因為執行最初在DLL上下文中運行,而現在在EXE上下文中運行。 我認為這是在C ++中使用模板並在其中執行代碼的結果。 使用C ++超過15年后,我學到了一些新東西。 希望這會幫助其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM