Openresty使用ffi调用.so
2016-05-15 00:00
351 查看
摘要: 需要使用Openresty调用一个.so动态链接库,这本来没有什么,只是这个动态链接库又依赖另一个链接库。。。
目的:
在Lua中调用动态链接库,传递参数为字符串,返回0成功,其他失败。
方法:
错误:
原因:
需要加载libcurl
解决:
Lua:
最终代码:
目的:
在Lua中调用动态链接库,传递参数为字符串,返回0成功,其他失败。
方法:
[code=plain]local ffi = require("ffi") -- 加载FFI local hntv = ffi.load("hntv_crypt") -- 加载动态库,此库依赖curl ffi.cdef[[ int verify_url(...); -- 定义要加载的方法 ]] local ret = hntv.verify_url("str1","str2") -- 调用
错误:
[code=plain]nginx: worker process: symbol lookup error: /usr/local/openresty/nginx/lua/libhntv_crypt.so: undefined symbol: curl_easy_init
原因:
需要加载libcurl
解决:
[code=plain]yum install libcurl-devel yum install libcurl
Lua:
[code=plain]ffi.load("curl", true) -- 注意这个true!!!是加载到global里面的意思,这个尼玛坑了一天
最终代码:
[code=plain]local ffi = require("ffi") ffi.load("curl", true) local hntv = ffi.load("hntv_crypt") ffi.cdef[[ int verify_url(...); ]]
相关文章推荐
- Linux GCC常用命令
- linux uname命令参数及用法详解(linux查看系统信息命令)
- Linux tail 命令详解
- Linux命令——cut命令学习
- Linux压缩解压缩命令
- Linux系统中的wc
- CentOS安装oh-my-zsh以及zgen
- 论文阅读 - Optimizing Graph Algorithms on Pregel-like
- Spark Streaming源码解读之JobScheduler内幕实现和深度思考
- Nginx+Keepalived实现站点高可用(主备)
- docker 概述
- nginx地址跳转及域名解析
- sqoop学习笔记
- Wrong FS: hdfs://******, expected: file:///
- windows7下硬盘安装linux 双系统相关背景知识
- nginx负载均衡详解
- opencv2中寻找轮廓
- shell启动程序脚本
- openGL 环境配置
- python调用shell小技巧