Skip to content
Advertisement

Linker can’t find Lua library definition

So, I’m relatively new to C++ and I’ve been trying to run Lua files in my C++ project. To start off things, I ran this simple code:

#include <iostream>
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
#include <stdlib.h>
#include <stdio.h>

int main() {
    std::cout << "Lua Console";

    lua_State *L;
    L = luaL_newstate();

    char ch;
    std::cin >> ch;
    return 0;
}

And the terminal command looks like this:

g++ main.cpp -L lib/liblua.a

Edit: Corrected to this

g++ main.cpp -Llib -llua

Lua libraries are installed on my system (Linux), but the linker can’t find the definition for luaL_newstate(), despite the fact that I included the library in the command line:

main.cpp:(.text+0x2b): undefined reference to `luaL_newstate()'

And that happens with any Lua function. I don’t really know what went wrong, importing libraries in Linux was pretty straightforward up until now. This seems to be a problem with me not familiar with using libraries in my projects, but I couldn’t find very useful documentation. Thank you in advance.

Advertisement

Answer

-L option designates a folder where library files are kept; try g++ main.cpp -Llib -llua

Also wrap #include for Lua headers into extern "C":

extern "C" {
  #include <lualib.h>
  #include <lauxlib.h>
  #include <lua.h>
}
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement