【问题标题】:Make a call in Lua, on a potentially not exposed Function in tolua++在 Lua 中调用 tolua++ 中可能未公开的函数
【发布时间】:2013-04-15 13:20:56
【问题描述】:

我有一个使用我的 C++ 应用程序的某些功能的 Lua 脚本。 我将此脚本与 2 个不同的 C++ 应用程序一起使用,并且我希望能够保护未通过 tolua 绑定的调用。

例如: - 假设我有两个 C++ 应用程序:MyApp1 和 MyApp2 - 我用 tolua++ 制作了 MyApp1 的包装器,并在 Lua 脚本中调用它的一个函数:

MyApp1:MyFunc()

现在我在 MyApp2 中使用相同的脚本,它没有任何这种类型的 tolua++ 绑定。 然后我得到这种类型的错误:

[string "MyApp2.lua"]:157: 尝试索引全局 'MyApp1' (一个 nil 值)

所以我希望 Lua 在调用此方法时不要向我发送错误消息。 我尝试使用:

pcall( MyApp1:MyFunc() )

但是脚本一直在这一行崩溃。

【问题讨论】:

  • 第二个应用程序中的MyApp1 = MyApp2 怎么样。
  • @user1095108 - 在这种情况下 MyApp2 也是 nil,因为它没有任何 tolua++ 绑定。
  • @W.B.:是的,那么你需要 if 测试。

标签: c++ lua call tolua++


【解决方案1】:
if MyApp1 then 
  MyApp1:MyFunc() 
end

【讨论】:

    【解决方案2】:
    if MyApp1 then
       MyApp1:MyFunc()
    end
    

    上述方法可行,但是将依赖于应用程序的脚本和独立的脚本分开不是更干净吗?这样你就不用担心了。

    【讨论】:

    • 这么简单啊!感谢 W.B.为您解答:)
    猜你喜欢
    • 2013-07-28
    • 1970-01-01
    • 2013-07-27
    • 2011-02-19
    • 2016-12-15
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2014-03-10
    相关资源
    最近更新 更多