testlib.c
生成动态库:
gcc -g -o testLib.so -fpic -shared testlib.c
# curl 127.0.0.1:6699/test
34
abcdef
1
#include <stdio.h>
#include <string.h>
char* fun_strcat(char* str1,char* str2){
return strcat(str1,str2);
}
生成动态库:
gcc -g -o testLib.so -fpic -shared testlib.c
local ffi = require("ffi")
ffi.cdef[[
typedef struct { double x, y; } A;
char* fun_strcat(char* str1,char* str2);
enum enum_type
{
type1 = 1,
type2,
};;
]]
local A = ffi.metatype("A",{})
local a = A(3, 4)
ngx.say(a.x, a.y)
local clib = ffi.load("/usr/local/code/testLib/testLib.so")
local str1 = ffi.new("char[?]", 10)
local str2 = ffi.new("char[?]", 10)
local s1 = "abc"
local s2 = "def"
ffi.copy(str1, s1, string.len(s1))
ffi.copy(str2, s2, string.len(s2))
local str = ffi.string(clib.fun_strcat(str1,str2))
ngx.say(str)
ngx.say(ffi.C.type1)
# curl 127.0.0.1:6699/test
34
abcdef
1