2012-02-11 21 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

答えて

1

ダイナミックリンカーがあなたのライブラリを見つけることができるかどうか知っていますか? LD_LIBRARY_PATHにライブラリパスを追加してみてください。あなたがテストスクリプトでノードを起動する前に、シェルでこれを実行できます。

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

(Macでは、それはDYLD_LIBRARY_PATHだろう。)

関連する問題