ffi 可以调用已经导出的符号。
在 OpenResty 上下文里,nginx 的 C 函数、OpenSSL 的 C 函数、还有另外一些编译进来的 nginx 的第三方模块,这些都是可以被直接调用的。
(所以你可以编写一个 Nginx C 模块,然后通过 Lua 代码调用它的函数)
当然之所以可以这么做,从根本来说,是因为编译器默认编译的时候,就把它们编译成可导出的符号。
假如你用 MSVC 来编译,默认的情况下是不会导出符号的,这时候就无法直接调用这些 C 函数了。
在 2017年7月22日星期六 UTC+8上午10:17:24,cheng ye写道:
为什么春哥调用ngx的一些c函数不需要使用ffi.load来载入对应的动态链接库。这些函数不是c标准库啊,不是只有c标准库才可以不用ffi.load方法么![]()
![]()