Not really sure what you're trying to achieve here. Do you have an application that lets you use Lua extensions? Or do you want to build an application that lets you use Lua extensions?
Programming
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities [email protected]
What do you mean “embedding lua into applications”?
I assume you mean you want an application extensible by user lua script?
You build an API that calls the lua interpreter and passes the script, and reads the output; same as you would for any other scripting language. You define what the inputs should be, create the interface for executing the user defined script through shell commands, and then retrieve the output.
For python you’re going to probably use this:
https://docs.python.org/3/library/subprocess.html#subprocess.check_output
For C# you’re going to use Process
https://stackoverflow.com/questions/4291912/process-start-how-to-get-the-output
The complexities arise in your implementation and there’s no single guide.
While lua ships a standalone interpreter, it is very much designed to be embedded directly into an application. This is done by invoking some C apis to load the interpreter into the application’s memory space. OP wants to do that rather than invoking another process and reading the output. When embedding into a host, the host can provide its own objects to be manipulated by the user script allowing for a much better extensibility experience.
That solution is janky and slow as hell. I'd rather just embed it into my own software, which is mostly done, except it doesn't find functions as functions, but as nil value.
Whats the host language you try to embed lua into?
D.
It has C ABI compatibility, so it should work. But as others wrote, I might have messed up my Lua script.
Upvote for D, underrated lang.
let me take a guess, gta online modder ?
No, I'm developing my own engine.
One Lone Coder has made few videos about adding Lua scripting to a C++ program, maybe it has what you're looking for: Embedding Lua in C++ #1
Well, reference manual was enough for me. There' nothing difficult. You probably have troubles with your lua code, try executing it in the standalone interpreter.