встроенные загрузочные модули Lua программно (C ++) - PullRequest
3 голосов
/ 24 декабря 2010

Я встраиваю Lua в приложение C ++.

У меня есть несколько модулей (на данный момент, простые скрипты .lua), которые я хочу загружать программно при запуске двигателя, чтобы при запуске двигателяЗапускается, модуль (и) доступен / доступен для сценариев без необходимости включать обязательный 'xxx' в верхней части сценария.

Для этого мне нужно иметь возможность программно (т.е. конец C ++), попросите движок загрузить модули, как часть инициализации (или вскоре после этого).

Кто-нибудь знает, как я могу это сделать?

Ответы [ 2 ]

4 голосов
/ 24 декабря 2010

Самый простой способ - добавить и отредактировать копию linit.c в своем проекте.

3 голосов
/ 29 октября 2011

Хм, я просто использую простой подход: мой код на C ++ просто вызывает функцию Lua require для предварительной загрузки сценариев Lua, которые я хочу предварительно загрузить!

// funky = require ("funky")
//
lua_getfield (L, LUA_GLOBALSINDEX, "require"); // function
lua_pushstring (L, "funky");     // arg 0: module name
err = lua_pcall (L, 1, 1, 0);
// store funky module table in global var
lua_setfield (L, LUA_GLOBALSINDEX, "funky");

// ... later maybe handle a non-zero value of "err"
// (I actually use a helper function instead of lua_pcall
// that throws a C++ exception in the case of an error)

Если у вас есть несколько модулей для загрузки,конечно, поместите это в цикл ...:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...