找不到符号:OpenSSL_version_num
Symbol not found: OpenSSL_version_num
我正在尝试创建一个 kong 插件。当 运行 作为 kong 服务器的一部分但当我试图用 busted, resty.openssl.digest
func load fails. More specifically while loading the version.lua
编写一些单元测试时它工作得很好
我不确定我到底错过了什么。也许一些 link 应该 link openSSL 的 C 函数到 lua.
这是重现问题的最短代码段。
package.cpath = package.cpath .. ';/usr/local/lib/lua/5.1/?.so'
local ffi = require("ffi")
ffi.cdef[[
// 1.0
unsigned long SSLeay(void);
const char *SSLeay_version(int t);
// >= 1.1
unsigned long OpenSSL_version_num();
const char *OpenSSL_version(int t);
// >= 3.0
const char *OPENSSL_info(int t);
// BoringSSL
int BORINGSSL_self_test(void);
]]
local num = ffi.C.OpenSSL_version_num()
print(num)
错误:
luajit: test.lua:18: Symbol not found: OpenSSL_version_num
stack traceback:
[C]: in function '__index'
test.lua:18: in main chunk
[C]: at 0x55b71c78ffa4
在使用其中的函数之前,您应该ffi.load
您的 .so 库。
local ffi = require("ffi")
ffi.cdef"long SSLeay(void);" -- I have ver 1.0
ffi.load("ssl", true)
print(ffi.C.SSLeay()) --> 268439887LL
注:
package.cpath
仅用于 require()
。
它不影响 FFI 功能。
我正在尝试创建一个 kong 插件。当 运行 作为 kong 服务器的一部分但当我试图用 busted, resty.openssl.digest
func load fails. More specifically while loading the version.lua
我不确定我到底错过了什么。也许一些 link 应该 link openSSL 的 C 函数到 lua.
这是重现问题的最短代码段。
package.cpath = package.cpath .. ';/usr/local/lib/lua/5.1/?.so'
local ffi = require("ffi")
ffi.cdef[[
// 1.0
unsigned long SSLeay(void);
const char *SSLeay_version(int t);
// >= 1.1
unsigned long OpenSSL_version_num();
const char *OpenSSL_version(int t);
// >= 3.0
const char *OPENSSL_info(int t);
// BoringSSL
int BORINGSSL_self_test(void);
]]
local num = ffi.C.OpenSSL_version_num()
print(num)
错误:
luajit: test.lua:18: Symbol not found: OpenSSL_version_num
stack traceback:
[C]: in function '__index'
test.lua:18: in main chunk
[C]: at 0x55b71c78ffa4
在使用其中的函数之前,您应该ffi.load
您的 .so 库。
local ffi = require("ffi")
ffi.cdef"long SSLeay(void);" -- I have ver 1.0
ffi.load("ssl", true)
print(ffi.C.SSLeay()) --> 268439887LL
注:
package.cpath
仅用于 require()
。
它不影响 FFI 功能。