Ссылка на Lua функционирует в C/C++

У меня была эта та же проблема зависимости, и я также знаю, что можно включать VS 8.0 DLLs (выпустите только! не отлаживают!---и Ваша программа должны быть выпуском, также) в папке соответствующего имени, в родительской папке с Вашим .exe:

, Как к: Разверните XCopy использования (MSDN)

Также примечание, что вещи, как гарантируют, спутаются, если у Вас должен быть C++, и код C в том же статически связал .exe, потому что Вы получите конфликты компоновщика, которые могут только быть разрешены путем игнорирования корректного libXXX.lib и затем соединения динамично (DLLs).

Наконец, с различным комплектом инструментальных средств (VC ++ 6.0) вещи "просто работают", так как Windows 2000 и выше установили корректный DLLs.

13
задан jameszhao00 13 September 2009 в 03:49
поделиться

2 ответа

Это то, для чего предназначена система отсчета . Вызов функции r = luaL_ref (L, LUA_REGISTRYINDEX) сохраняет значение в верхней части стека в реестре и возвращает целое число, которое может быть сохранено на стороне C и использовано для получения значения с функцией вызовите lua_rawgeti (L, LUA_REGISTRYINDEX, r) .

См. главу PiL , а также документацию luaL_ref () , lua_rawgeti () и luaL_unref () для получения полной информации.

21
ответ дан 1 December 2019 в 22:07
поделиться

API Lua ( http://www.lua.org/manual/5.1/manual.html#3 ) может использоваться для доступа к любым элементам таблицы, которые вы хотите . Используйте lua_gettable (), чтобы извлечь член таблицы и поместить его в стек lua, если этот член также является таблицей, просто вызовите lua_gettable () снова, чтобы получить доступ к этой таблице, и так далее ...

(В зависимости от того, что вы ' повторное выполнение lua_rawget () может быть лучшим выбором, чем lua_gettable ())

Дополнительно в ответ на комментарий:

Хорошо, это немного интереснее. Что ж, таблица является ссылочным объектом (более или менее), поэтому вы, вероятно, можете безопасно сохранить где-нибудь самую внутреннюю ссылку на таблицу.

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

например

// Final table reference is now at top of stack, after multiple dereferences
lua_setglobal( L, "mytableref" );
2
ответ дан 1 December 2019 в 22:07
поделиться