Как передать большую структуру назад и вперед между между C++ и Lua

Мне удалось получить решение проблемы

UserCredentials.newBuilder()
            .setClientId("your client id")
            .setClientSecret("your client secret")
            .setAccessToken("Access Token")
            .build()

Этот объект UserCredentials можно передать в `FixedCredentialsProvider.create ())

Получить токен доступа с помощью

[ 111]

https://github.com/erickogi/AndroidGooglePhotosApi

Надеюсь, это поможет

5
задан RBerteig 24 July 2009 в 09:14
поделиться

4 ответа

Если я вспоминаю правильно, свет userdata является на самом деле просто указателем. Они все совместно используют ту же таблицу метаданных. Они главным образом используются для раздавания адресов данных C.
Полный userdata, вероятно, ближе из того, в чем Вы нуждаетесь, если необходимо получить доступ к нему со стороны Lua. Их таблица метаданных позволила бы Вам получать доступ, это как он была регулярная таблица Lua, например.

Вам могло бы также быть интересно библиотекой Roberto для преобразования данных к и от структур C для Lua 5.1. Или нет. Зависит от Ваших потребностей... :-)

4
ответ дан 14 December 2019 в 04:50
поделиться

Я не сделал этого сам (это были годы, с тех пор как я использовал Lua, и я никогда не использовал встроенным способом), но я думаю, что необходимо изучить таблицы метаданных и тип userdata. В руководстве говорится это о значениях userdata:

Этот тип соответствует блоку необработанной памяти и не начинает предопределенных операций в Lua, кроме теста присвоения и идентификационных данных. Однако при помощи таблиц метаданных, программист может определить операции для значений userdata (см. §2.8). Стоимость Userdata не может быть создана или изменена в Lua, только через API C

Звуки о праве.

3
ответ дан 14 December 2019 в 04:50
поделиться

Представление всего представления Lua не может быть тем, что Вы хотите. Возможно, Вы только выставляете несколько операций? Затем используйте указатель на структуру как свет userdata. Это не может иметь таблицы метаданных, таким образом, необходимо использовать явные функции.

Если Вы хотите выставить все, Ваш лучший выбор состоит в том, чтобы, вероятно, продвинуть полный userdata, содержащий только указатель на структуру. Это означает дополнительный уровень абстракции---потерянный в шуме с точки зрения производительности, но легкий понять превратно, поэтому поддержите единственную точку истины, где Вы пересекаете C++/Lua граница.

С полным userdata можно использовать макросы (ужас!) помещать метод считывания и метод set функционирует для каждого поля. Это - большая работа, чтобы сделать вручную, и можно предпочесть проверять tolua ++ даже при том, что это идет с большим количеством багажа.

Перейдите к списку рассылки Lua!

1
ответ дан 14 December 2019 в 04:50
поделиться

Если бы я был там, где вы, я бы передал ссылку на структуру, а затем позволил бы Lua вызвать Функции C для его изменения. Это также означает, что вы можете модернизировать систему с меньшими трудностями, чем если бы Lua знал все детали базовой системы.

0
ответ дан 14 December 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: