美文网首页
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之简单的error handler

    序 假设我们在编写一个C/C++的应用程序,程序中嵌入了Lua,那么,在使用Lua的C API的过程中,如何处理e...

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

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

  • C++调用lua方式

    目标 使用C++调用lua接口 示例 lua代码(test.lua) C++调用示例(lua_test.cpp) ...

  • Lua前世今生、优势、应用场景

    Abstract:C\C++ + Lua = 性能 + 动态性(灵活) = 灵活的C/C++。 Lua前世今生、优...

  • Lua和C交互的简易教程

    Lua栈 要理解Lua和C++交互,首先要理解Lua堆栈。简单来说,Lua和C/C++语言通信的主要方法是一个无处...

  • Lua脚本中实现Class机制

    纯lua脚本实现c++中的类的概念机制,后面空了把lua和c++的交互,lua中直接声明和使用c++中定义的对象补...

  • Redis使用之Lua脚本

    Lua脚本 Lua是一个高效的轻量级脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中...

  • Lua与C++如何相互交互?

    Lua与C++如何相互交互 通过lua虚拟栈隔离Lua和C/C++类型和彼此内存的差异来实现数据及函数互相调拥。1...

  • lua--数据类型、变量、循环、函数、运算符的使用

    lua是一种轻量级脚本语言,由c语言编写,设计lua的初衷是为了:嵌入到应用程序中,提供灵活的扩展和定制化功能lu...

  • Lua绑定流程

    绑定是为了实现将C++代码注册到lua环境,使得lua可以调用C++函数。https://blog.csdn.ne...

网友评论

      本文标题:C/C++应用程序嵌入Lua

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