私はlibcurlをluajitffiでラップすることに取り組んでいます。ファイナライザーが呼び出されません。
local ffi = require("ffi")
ffi.cdef [[
typedef struct{} CURL;
CURL * curl_easy_init();
void curl_easy_cleanup(CURL *);
]]
local CURL_lib = ffi.load("../lib/libcurl.so")
local CURL_CTX
local CURL_CTX_mt = {
__gc = function() print "finalizing"; CURL_lib.curl_easy_cleanup(CURL_CTX); end
}
ffi.metatype("CURL", CURL_CTX_mt)
CURL_CTX = ffi.new("CURL[1]")
CURL_CTX = CURL_lib.curl_easy_init();
print "done"
ここで何が欠けていますか?:D
ところで、CURLはtypedef void CURL;
、私がやろうとしている方法が十分にクリーンではないと確信しているために定義されています。何かアドバイス ?
ユーレカ!:自己回答-明白な問題がある場合でもコメントに興味があります。