目的:
在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(...);
]]