文档章节

Openresty使用ffi调用.so

江湖夜雨
 江湖夜雨
发布于 2016/05/15 18:38
字数 194
阅读 61
收藏 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
私信 提问
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
0
0
openresty调用自己编译C动态库,无法找到其自己动态库依赖的库

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

vanlee90
2016/09/26
628
1
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
0
0
nginx openresty windows 1.9.4.1002 发布

nginx openresty windows 1.9.4.1002 发布: 32 bit: http://pan.baidu.com/s/1mg1V5Ny 64 bit: http://pan.baidu.com/s/1i393jVJ nginx openresty windows 是 nginx openresty 迁移到 wind......

小东111
2015/09/16
1K
8
在 OS X 中使用 OpenResty

移除 lighttpd 在 Mac OS X 上安装lighttpd 的时候,我使用 launchctl 来实现 lighttpd 的自动启动。现在,只需要 unload 即可。 launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.li...

Surjur
2015/08/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
2
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
4
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0
Kernel I2C子系统

备注:所有图片来源于网络 1,I2C协议: 物理拓扑: I2C总线由两根信号线组成,一条是时钟信号线SCL,一条是数据信号线SDA。一条I2C总线可以接多个设备,每个设备都接入I2C总线的SCL和SDA。I...

yepanl
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部