2011-12-18 3 views
-1

내 코드삽입 루아 런타임 오류 : 기호를 찾을 수 없습니다 _luaL_newstate

inline int DOFILE(string& filename) { 

    printf("lua_open\n"); 
    /* initialize Lua */ 
    lua_State* L = lua_open(); 

    printf("lua_openlibs\n"); 
    /* load Lua base libraries */ 
    luaL_openlibs(L); 

    printf("lua_dofile\n"); 
    /* run the script */ 
    int ret = luaL_dofile(L, filename.c_str()); 

    printf("lua_close\n"); 
    /* cleanup Lua */ 
    lua_close(L); 

    return ret; 
} 

컴파일 옵션 :

obj.cxxflags = ["-g", "-D_FILE_OFFSET_BITS=64", "-D_LARGEFILE_SOURCE", "-Wall", "-llua-5.1"] 

또한 그들 모두가

경고보고, '-llualib' '-llua를'시도 내가 실행하면
i686-apple-darwin11-llvm-g++-4.2: -llua-5.1: linker input file unused because linking not done 

, 그것을보고 :

lua_open 
dyld: lazy symbol binding failed: Symbol not found: _luaL_newstate 
    Referenced from: /Users/gl/workspace/node-lua/build/Release/node_lua.node 
    Expected in: flat namespace 

dyld: Symbol not found: _luaL_newstate 
    Referenced from: /Users/gl/workspace/node-lua/build/Release/node_lua.node 
    Expected in: flat namespace 
+0

이 질문을 참조하십시오 http://stackoverflow.com/questions/8552560/embedding-lua-in-c/8552620#8552620 –

+1

빌드 시스템에'obj.ldflags' 설정과 같은 것이 있습니까? 그렇다면 라이브러리를 설치하십시오. – Mat

+0

@Mat 나는 잘 모르겠다. 사실 나는 C++의 newb이다. node-waf를 사용하여 node-addon을 작성하려고한다. 나는 그것을 google 할 것이다. 감사. –

답변

1

라이브러리에는 obj.ldflags 매개 변수를 사용해야합니다.

은 사용하는 빌드 도구는 두 단계의 바이너리를 생성합니다

  1. 컴파일
  2. 링크

컴파일 단계는 obj.cxxflags 컴파일러 플래그를 사용합니다. 라이브러리는 컴파일 할 필요가 없으므로 링커 플래그 (-lfoo)를 사용하면 유용하지 않습니다. 컴파일러는 전혀 사용하지 않습니다 (따라서 경고).

링크 단계는 obj.cxxflagsobj.ldflags을 사용해야합니다. 매우 간단 코드를 모두 컴파일하고 g++ -o thing thing.cpp -lpthread으로 예를 들어, 동시에 연결 할 수 있도록

은 (그것은 드문 일이 아니다 (ld는. 링커의 이름입니다). 그러나 더 큰 위해 분리 컴파일 및 링크가 빌드 평소.)

관련 문제