Swig Lua объект от переводчика - PullRequest
0 голосов
/ 06 февраля 2019

Иногда я получаю переменные lua непосредственно из интерпретатора из моего кода C ++, не связанного с swig, например

lua_getglobal( mpLuaState, varname );
double var = lua_tonumber(mpLuaState, -1);
lua_setglobal( mpLuaState, varname );

Когда я пытаюсь взять какой-то пользовательский объект с

void * = lua_touserdata(mpLuaState, -1);

Я понял, что SWIG оборачивает пользовательские объекты с помощью SWIG_NewPointerObj.

Есть ли способ получить значение указателя на мой пользовательский объект?

@ edit

У меня естьтолько что нашел решение этой проблемы.Я добавил метод в свой класс, экспортированный в lua с помощью Swig,

unsigned long GetPtr();

, который возвращает

return (unsigned long)this;

, а затемкогда я хочу взять его из кода C ++ (не относящегося к Swig, но только с указателем на Lua_state*), запустите скрипт с

luaL_doString("ptrVal = MyObj:GetVal")

, а затем примите его как нормальное число иразберите его на void*

Это просто обходной путь, и я хотел бы сделать это правильно.Какие-либо предложения?

...