`

lua ffi

 
阅读更多
testlib.c
#include <stdio.h>
#include <string.h>

char* fun_strcat(char* str1,char* str2){
    return strcat(str1,str2);
}


生成动态库:
gcc -g -o testLib.so -fpic -shared testlib.c


local ffi = require("ffi")

ffi.cdef[[
typedef struct { double x, y; } A;
char* fun_strcat(char* str1,char* str2);
enum enum_type
{
  type1 = 1,
  type2,
};;
]]

local A = ffi.metatype("A",{})

local a = A(3, 4)
ngx.say(a.x, a.y)

local clib = ffi.load("/usr/local/code/testLib/testLib.so")
local str1 = ffi.new("char[?]", 10)
local str2 = ffi.new("char[?]", 10)
local s1 = "abc"
local s2 = "def"
ffi.copy(str1, s1, string.len(s1))
ffi.copy(str2, s2, string.len(s2))

local str = ffi.string(clib.fun_strcat(str1,str2))
ngx.say(str)

ngx.say(ffi.C.type1)



[root@localhost bin]# curl 127.0.0.1:6699/test
34
abcdef
1
分享到:
评论

相关推荐

    rust_lua_ffi:自动生成Rust和Lua粘合代码以实现无缝FFI互操作

    Lua到Rust FFI代码生成激励榜样锈#[derive(LuaMarshalling)]pub struct A { string: String , integer: i32 ,}pub mod extern_ffi { pub fn make_a (string: & str , integer: i32 ) -&gt; A { A { string: string....

    lit-hoedown:C Markdown解析器包裹在lua ffi中并打包为lit

    总结来说,"lit-hoedown"项目是将高效的Markdown解析器Hoedown通过lua FFI技术进行封装,创建了一个名为"lit"的lua模块,使得lua开发者能够方便地处理Markdown文本,增强了lua在文档处理和文本格式转换方面的能力。

    lua-ffi-libinjection:LuaJIT FFI绑定用于libinjection

    名称lua-resty-libinjection-用于libinjection的LuaJIT FFI绑定地位该库正在积极开发中,可以投入生产描述该库为 ,SQL / SQLi和XSS标记程序和分析器提供FFI绑定。安装像安装其他任何OpenResty lua模块一样,安装此...

    linux下lua5.2.0静态库

    在Linux环境下,构建和使用Lua 5.2.0静态库是软件开发中常见的任务,特别是在需要嵌入Lua脚本语言能力的C/C++项目中。Lua是一种轻量级、可扩展的脚本语言,因其简洁的语法和高效性能而受到广泛欢迎。以下是关于Linux...

    lua调用可执行文件

    在Lua中调用Windows API需要使用如`luajit-ffi`或`tolua++`等库来绑定C/C++的动态链接库(DLL)。这些库允许我们直接在Lua中使用C语言的类型和函数。 在`lua 调用windows api.txt`中,可能包含了如何使用Lua调用...

    magick:Lua使用FFI绑定到LuaJIT的ImageMagick

    魔术师 Lua使用FFI绑定到ImageMagick的或GraphicsMagick的 。安装您将需要同时安装LuaJIT(任何版本)和MagickWand或GraphicsMagick。 在Ubuntu上,要使用ImageMagick,可以运行: $ sudo apt-get install luajit$ ...

    lua-resty-lrucache, 在 LuaJIT FFI上,基于Lua缓存.zip

    lua-resty-lrucache, 在 LuaJIT FFI上,基于Lua缓存 电子邮件名称lua-resty-lrucache - 基于 LuaJIT FFI的land缓存目录NAME状态概要说明描述方法新插件设置 。删除先决条件安装工具待办事项社区服务英文邮件列表中文...

    lua 调用 c++ dll 示例

    总结,这个例子展示了 Lua 如何利用 C++ DLL 来扩展其功能,通过 Visual Studio 2010 创建 C++ 接口,并在 Lua 端使用 FFI 进行调用。这个过程涉及到了跨语言调用、动态链接库、C 库接口、异常处理和内存管理等多个...

    lua扩展库V1.51

    《lua扩展库V1.51》是针对lua编程语言的一个功能丰富的库集合,它为lua程序员提供了更多元化的操作工具,特别是在硬件控制和数据处理方面。以下将详细阐述其中的一些核心库及其功能: 1. **bit库**: - `bit`库是...

    LUA与VC DLL互相调用

    在IT领域,LUA(Lightweight User-Agent)是一种轻量级的脚本语言,常用于游戏开发、嵌入式系统以及服务器配置等场景。而DLL(Dynamic Link Library)是Windows操作系统中的动态链接库,它封装了一系列函数和资源,...

    fzy-lua-native:Luajit FFI与FZY的绑定

    《fzy-lua-native:Luajit FFI与FZY高效结合的应用解析》 在IT领域,特别是软件开发中,高效、灵活的编程语言和工具是提升开发效率的关键。"fzy-lua-native"项目正是这样一种创新的结合,它巧妙地将LuaJIT的Foreign...

    lua调用c++动态库的简单示例

    这里,我们使用了Lua的FFI(Foreign Function Interface)库来定义C函数的原型,并加载DLL。`ffi.load`函数会查找指定路径的DLL文件,并返回一个对象,通过这个对象我们可以调用DLL中的函数。 请注意,实际操作时,...

    lua-resty-nettle, LuaJIT FFI的绑定( 低级加密库).zip

    lua-resty-nettle, LuaJIT FFI的绑定( 低级加密库) lua-resty-nettle针对荨麻疹( 低级别加密库)的LuaJIT FFI绑定概要local require = requirelocal print = printlocal gsub = string.g

    lua-libcidr-ffi:LuaJIT FFI绑定到libcidr。 提供针对IPv4和IPv6的CIDR计算

    `lua-libcidr-ffi` 是一个专门为 LuaJIT 设计的库,它利用了 LuaJIT 的 Foreign Function Interface(FFI)特性来绑定 `libcidr` 库,从而在 Lua 中提供对CIDR(Classless Inter-Domain Routing)表示的IPv4和IPv6...

    Lua脚本支持库

    5. **数据库访问**:LuaJIT-FFI(Foreign Function Interface)允许直接操作二进制数据,可以用来连接和操作各种数据库,如MySQL、SQLite等。luasql则提供了一个统一的接口来访问不同的关系型数据库。 6. **图形与...

    lua---md5-master.zip

    在Lua中,实现MD5功能通常需要借助于C库,如luajit-ffi或lua-openssl等。这些库提供了与C语言接口,允许Lua调用C语言编写的MD5函数。以下是一个简单的例子,展示如何使用luajit-ffi库计算字符串的MD5: ```lua ...

    Lua cjson.dll 亲测可用

    这个库是 LuaJIT-FFI(Foreign Function Interface)的一个扩展,允许 Lua 直接调用 C 库的功能,而无需通过 Lua 的 C API 编写绑定代码。 标题“Lua cjson.dll 亲测可用”表明这是一个已经过测试并确认可以在 Lua ...

    lua-resty-lrucache:基于LuaJIT FFI的Lua-land LRU缓存

    lua-resty-lrucache-基于LuaJIT FFI的Lua-land LRU缓存。 目录 安装 社区 英文邮件列表 中文邮件列表 错误和补丁 作者 版权和许可 也可以看看 地位 该库被认为可以投入生产。 概要 -- file myapp.lua: example ...

    Lua Performance Tips.rar

    LuaJIT提供了FFI(Foreign Function Interface),可以直接调用C库,进一步提升性能。 8. **代码优化** 编写清晰、简洁的代码,避免冗余计算和不必要的函数调用。利用Lua的表达式求值顺序,以及理解函数调用开销,...

Global site tag (gtag.js) - Google Analytics