2012-02-11 48 views
4

我正在爲同事C庫的Node.js包裝模塊工作。該庫是在共享對象(.so)表單中創建的,用於動態鏈接。Node.js模塊 - 添加鏈接依賴關係

我CPP模塊文件開始

#include "path/to/lib/source/lib.h" 

,並與下面的WScript

def set_options(ctx): 
    ctx.tool_options('compiler_cxx') 

def configure(ctx): 
    ctx.check_tool('compiler_cxx') 
    ctx.check_tool('node_addon') 
    ctx.env.append_value('LINKFLAGS', ['-l:lib.so', '-L/path/to/lib.so/']) 

def build(ctx): 
    t = ctx.new_task_gen('cxx', 'shlib', 'node_addon') 
    t.source = ['module.cpp'] 
    t.target = 'module' 

建當我再繼續打電話到我的模塊,這反過來調用庫,我得到出現以下錯誤:

node: symbol lookup error: <path/to/module.node>: 
undefined symbol: <name of library call> 

我試着用'ldd mo'轉儲模塊的依賴關係dule.node',我有點懷疑,因爲它沒有提到我的.so文件。

任何幫助非常感謝!

+0

是你能解決這個問題嗎? – ian 2012-03-26 08:55:20

回答

1

你知道動態鏈接器是否可以找到你的庫嗎?嘗試將庫路徑添加到您的LD_LIBRARY_PATH中。你調用節點之前,你的測試腳本可以在shell中運行這樣的:(在Mac上,這將是DYLD_LIBRARY_PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/lib.so/ 
node test-script.js