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