文档章节

Openresty使用ffi调用.so

江湖夜雨
 江湖夜雨
发布于 2016/05/15 18:38
字数 194
阅读 198
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

目的:

在Lua中调用动态链接库,传递参数为字符串,返回0成功,其他失败。

方法:

local ffi = require("ffi") -- 加载FFI

local hntv = ffi.load("hntv_crypt") -- 加载动态库,此库依赖curl

ffi.cdef[[
    int verify_url(...); -- 定义要加载的方法
]]

local ret = hntv.verify_url("str1","str2") -- 调用

错误:

nginx: worker process: symbol lookup error: /usr/local/openresty/nginx/lua/libhntv_crypt.so: undefined symbol: curl_easy_init

原因:

需要加载libcurl

解决:

yum install libcurl-devel
yum install libcurl

Lua:

ffi.load("curl", true) -- 注意这个true!!!是加载到global里面的意思,这个尼玛坑了一天

最终代码:

local ffi = require("ffi")
ffi.load("curl", true)
local hntv = ffi.load("hntv_crypt")
ffi.cdef[[
int verify_url(...);
]]

 

© 著作权归作者所有

江湖夜雨
粉丝 0
博文 3
码字总数 323
作品 0
石景山
CEO
私信 提问
加载中

评论(0)

Openresty中使用LuaJit

今天在使用Openresty的时候,遇到了一个问题: local resty_sha1 = require "resty.sha1" 想使用resy.sha1的时候,出现了error,log如下: 2013/09/25 09:00:40 [error] 19620#0: *3 lua en......

timingbob
2013/09/25
2.9K
0
openresty调用自己编译C动态库,无法找到其自己动态库依赖的库

使用FFI编写一个动态库,库里面调用openssl及相关的库,但是加载到openresty时,无法找到其依赖的openssl库和第三方的库,并且已放到usr/lib目录性,并在 lua_package_cpath '/lib64/?.so;/...

vanlee90
2016/09/26
1.1K
2
《用OpenResty搭建高性能服务端》笔记

概要 《用OpenResty搭建高性能服务端》是系列课程中的入门课程,主讲人:温铭老师。课程分为10个章节,侧重于的基本概念和主要特点的介绍,包括它的指令、 API、缓存、如何连接数据库、执行阶...

osc_15ajvvu8
2019/03/28
5
0
Building openresty1.7.10.1 with luajit on windows

Building openresty1.7.10.1 with luajit on windows using Cygwin, 在windows下用Cygwin下编译带Luajit的openresty 2013-11-27 15:39 815人阅读 评论(0) 收藏 举报 (heeroz原创 )First i......

epiclight
2015/06/03
105
0
OpenResty 社区王院生:lua-resty-r3 高性能 OpenResty 路由实现

大家下午好!首先做下自我介绍,我于 2014 年加入奇虎 360,后与温铭结识,当时他正在基于 OpenResty 做天擎服务端,用于提供 API 服务。2015 年我们一起写了《 OpenResty 最佳实践 》,原因...

又拍云
2019/05/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

window下 mongodb开启用户名和密码 权限

在默认情况下,mongod是监听在127.0.0.1之上的,任何客户端都可以直接连接27017,且没有认证。 好处是,用户可以即时上手,不用担心被一堆配置弄的心烦意乱。 坏处是,公网服务器搭建MongoDB...

东东笔记
41分钟前
9
0
数据倾斜

数据倾斜: 两种数据倾斜发生的现象: 80%情况下都发生挂了,只有极少20%情况下能把task执行完成 窄依赖:结构简单,如果发生数据丢失,方便查找丢失的数据 宽依赖:结构复杂,如何发生数据丢...

七宝1
今天
20
0
我的jdk源码(十一):ArrayList

一、概述 ArrayList类是AbstractList的子类,实现了具体的add(), set(), remove()等方法。它是一个可调整大小的数组可以用来存放各种形式的数据。 二、源码分析 (1) 类的声明,源码如下: ...

Java觉浅
昨天
24
0
vnc server,vnc server是什么,vnc工具推荐

nc server是一个用来共享linux服务器上资源给其他分布式用户的服务只要再一台linux系统的机器上安装vnc server,然后开启服务,其他机器就可以通过vncviewer访问这台机器上的共享资源,那么今...

兔子m
昨天
20
0
COLA的扩展性使用和源码研究

cola扩展点使用和设计初探 封装变化,可灵活应对程序的需求变化。 扩展点使用 步骤: 定义扩展点接口,类型可以是校验器,转换器,实体; 必须以ExtPt结尾,表示一个扩展点。 比如,我定义一个...

李福春carter
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部