美文网首页
C/C++应用程序嵌入Lua

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

作者: KomalZheng | 来源:发表于2017-03-19 19:54 被阅读69次


    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.添加头文件搜索路径

    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

    liblua.a.png

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

    5. 输出Hello World

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

    #include <iostream>
    
    extern "C"
    {
    #include <lua.h>
    #include <lualib.h>
    #include <lauxlib.h>
    }
    
    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

          本文链接:https://www.haomeiwen.com/subject/vfcmnttx.html