有乙個特性需要呼叫第三方庫libsync,在node.js裡可以用ffi來實現
首先稍微包裝了一下,ffi也是支援非同步呼叫的,但是api比較麻煩,包裝以後呼叫起來會比較容易
var ffi = require("ffi");
var lib = ffi.library('./libsync', );
exports.file_chunk = file_chunk;
exports.file_delta = file_delta;
exports.file_sync = file_sync;
// callback(err, result)
function file_chunk(src, chunk, algo, callback)
function file_delta(src, chunk, delta, algo, callback)
function file_sync(src, delta, callback)
/**
* the extension to use on libraries.
* i.e. libm -> libm.so on linux
*/var ext = library.ext = [process.platform]
所以接下來就是需要把源**.c,.h編譯成.so和.dylib庫(開發需要.dylib,生產環境需要.so)
mac下編譯dylib檔案的命令也很簡單:
gcc -dynamiclib -o c.dylib a.c b.c
實際呼叫的**:
libsync.file_chunk(localpath, chunkpath, 0, function (err, flag) );
iOS中建立,使用動態庫 dylib
測試環境 xcode4.5.2 mac os x 10.8.2 重要 由於蘋果不支援自己建立動態庫,所以這裡需要替換兩個檔案 1 ios device 需要替換的檔案 2 ios 模擬器 需要替換的檔案 具體可參照 或者 替換完成後重啟xcode 建立動態庫 1 開啟xcode,新建專案,選擇os ...
ffi動態鏈結庫的使用
最進專案中使用到了socketproc通訊,但是這樣有一點不是很好,必須單獨啟動乙個程序來執行 中的shell命令,後面想在nginx lua的環境下使用openresty中的lua resty shell,但是在後續閱讀原始碼說明的時候發現依賴關係過於複雜,會導致引入的openresty模組越來越...
(原)lua使用ffi呼叫c程式的函式
參考 1.新建calcmath.cpp,輸入 1 include 2 include 3 include 4 using namespace std 56 7extern c 1213float isquare float val 1417 18double isqrt double val 192...