Сделайте вызов в Lua для потенциально не раскрытой функции в tolua ++

У меня есть сценарий Lua, который использует некоторые функции моего приложения на C ++. Я использую этот сценарий с двумя разными приложениями C ++, и я хотел бы иметь возможность защитить вызов, чтобы он не был привязан через tolua.

Например: - Допустим, у меня есть два приложения C ++: MyApp1 и MyApp2 - я создал оболочку MyApp1 с помощью tolua ++ и вызываю одну из его функций, например, в сценарии Lua:

MyApp1:MyFunc()

Теперь я использую этот же скрипт с MyApp2, у которого нет привязки этого типа к tolua ++. И тогда я получаю ошибку такого типа:

[строка «MyApp2.lua»]: 157: попытка проиндексировать глобальный «MyApp1» (нулевое значение)

Поэтому я бы хотел, чтобы Lua не отправлял мне ошибку при вызове этого метода. Я пробовал использовать:

pcall( MyApp1:MyFunc() )

Но скрипт продолжает вылетать на этой строке.


person matt    schedule 15.04.2013    source источник
comment
как насчет MyApp1 = MyApp2 во втором приложении.   -  person user1095108    schedule 15.04.2013
comment
@ user1095108 - в этом случае MyApp2 также равен нулю, поскольку у него нет привязок к tolua ++.   -  person W.B.    schedule 15.04.2013
comment
@ W.B .: Ага, тогда тебе нужны if тесты.   -  person user1095108    schedule 15.04.2013


Ответы (1)


if MyApp1 then
   MyApp1:MyFunc()
end

Вышесказанное будет работать, но разве не лучше разделить зависимые от приложения и независимые скрипты? Таким образом, вам не придется об этом беспокоиться.

person W.B.    schedule 15.04.2013
comment
Ах очень просто так! Спасибо W.B. за ваш ответ:) - person matt; 16.04.2013