2012-02-11 2 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에 라이브러리 경로를 추가하십시오. 당신이 당신의 테스트 스크립트를 사용하여 노드를 호출하기 전에 쉘에서 이것을 실행할 수 있습니다. (Mac 인, DYLD_LIBRARY_PATH 될 것이라고)

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