C/C++应用程序嵌入Lua

欢迎前往个人博客 驽马点滴 和视频空间 哔哩哔哩-《挨踢日志》


Lua是一门嵌入式语言,这意味着其他应用可以链接它,从而将它作为一个库,以便使用它的所有特性。

本篇讲述在OS X环境下,如何在C/C++代码中嵌入Lua。

大纲


  1. 编译库文件;
  2. 创建C++控制台应用程序;
  3. 添加头文件搜索路径;
  4. 添加lua库文件liblua.a
  5. 输出Hello World

正文


1.编译库文件

在如何初始化Lua环境一文中,已经完成了lua库文件的编译过程,并生成了静态库 liblua.a

cd /Users/huaxingzheng/develop/lua-5.3.4/src
ls *.a

输出

liblua.a

2.创建C++控制台应用程序

  1. 打开Xcode
  2. 创建新的工程
  3. 选择macOS系统下的Command Line Tool类型的应用程序,点击下一步
  4. 填写Product Name(比如LuaTest),Language选择C++,点击下一步
  5. 选择工程的保存路径,点击创建
  6. 运行测试

3.添加头文件搜索路径

C/C++应用程序嵌入Lua_第1张图片
set_header_search_paths.png

如图所示,单击工程LuaTest,选中Build Settings,在搜索栏中查找Header Search Paths,将其配置为
/Users/huaxingzheng/develop/lua-5.3.4/src
这样,我们为该工程添加了lua-5.3.4的头文件的查找路径

4. 添加lua库文件liblua.a

C/C++应用程序嵌入Lua_第2张图片
liblua.a.png

如图所示,我们在LuaTest工程的Build Phases中,添加liblua.a库文件

5. 输出Hello World

main.cpp文件中的内容替换成以下内容,保存并运行:

#include 

extern "C"
{
#include 
#include 
#include 
}

int main(int argc, const char * argv[]) {
    lua_State *L = luaL_newstate();
    
    luaL_openlibs(L);
    
    int err = luaL_dostring(L, "print('Hello World')");
    if (err)
    {
        printf("---- ERROR!\n");
        lua_pop(L, 1); // pop error message from the stack
    }
    else
    {
        printf("---- SUCCESS!\n");
    }
    
    lua_close(L);
    
    return 0;
}

输出

Hello World
---- SUCCESS!
Program ended with exit code: 0

你可能感兴趣的:(C/C++应用程序嵌入Lua)