2013-04-11 4 views
0

저는 gwan을 처음 사용하고 있으며 현재 MongoDB에서 데이터를 삽입하고 선택할 수있는 간단한 프로그램을 코딩하고 있습니다. 나는 몽고-C-드라이버를 컴파일하고, 몽고 표준 라이브러리를 넣어 후 의는/usr/lib 디렉토리/나는 외무성 부상/CSP 폴더 아래에 내 프로그램에 오류가 있음을 발견 :gwan and mongodb

Linking myprog.c: undefined symbol: mongo_client 

내 프로그램

#include <mongo.h> 
int main(){ 
    ... 
    mongo conn[1]; 
    int status = mongo_client(conn, "192.168.1.115", 27017); 
} 

(Linux 환경에서 코딩 한 프로그램이 작동합니다!) < - mongodb 공식 테스트 코드를 의미합니다.

gcc -o output -lmongoc myprog_Linux.c 

아무도 도와 줄 수 있습니까? 은 대단히 감사합니다 :)

+0

즐기세요 "[클리핑]"또는의 #pragma 링크 "[경로] modulename [.ext] "문서에 설명 된대로 – solisoft

+0

#pragma include 및 #pragma link를 시도했지만 여전히 작동하지 않습니다 ... – moriya

+1

마지막으로 헤더 파일을 포함하므로 문제가 해결되었습니다 !! 감사합니다 !!!! – moriya

답변

1

에 대한 약간의 샘플 외무성 부상 + MongoDB를

첫째, 그것은/usr/지방 폴더에 설치합니다 (https://github.com/mongodb/mongo-c-driver)

$ git clone https://github.com/mongodb/mongo-c-driver.git 
$ cd mongo-c-driver 
$ scons 
$ sudo scons install 

MongoDB를의 C 드라이버를 설치, 당신은 그것을 적용해야합니다 필요하거나 단지로 생성 된 파일을 복사 할 경우는/usr/lib에 &는/usr//

다음 루트로 ldconfig를 실행 포함

$ sudo ldconfig 

MongoDB를의 C 드라이버가 설치되면, 바로이 간단한 샘플을 시도 :

// ============================================================================ 
// C servlet sample for the G-WAN Web Application Server (http://trustleap.ch/) 
// ---------------------------------------------------------------------------- 
// mongodb.c: querying mongoDB from G-WAM 
// ============================================================================ 

#pragma link "mongoc" 
#pragma link "bson" 

#include <mongo.h> 
#include <bson.h> 
#include "gwan.h" // G-WAN exported functions 

int main(int argc, char *argv[]) 
{ 
    xbuf_t *reply = get_reply(argv); 
    mongo conn[1]; 
    int status = mongo_client(conn, "localhost", 27017); 

    if(status != MONGO_OK) { 
    switch (conn->err) { 
     case MONGO_CONN_NO_SOCKET: printf("no socket\n"); return 1; 
     case MONGO_CONN_FAIL:  printf("connection failed\n"); return 1; 
     case MONGO_CONN_NOT_MASTER: printf("not master\n"); return 1; 
    } 
    } 

    int i = 0; 
    for(i=0; i<100;i++) { 
    bson b[1]; 
    bson_init(b); 
    bson_append_new_oid(b, "_id"); 
    bson_append_string(b, "name", "Joe"); 
    bson_append_int(b, "age", 33); 
    bson_finish(b); 
    mongo_insert(conn, "tutorial.people", b, NULL); 
    bson_destroy(b); 
    } 

    xbuf_xcat(reply, "Hello Mongo !! %d %d", status, i); 

    return 200; 
} 
// ============================================================================ 
// End of Source Code 
// ============================================================================ 

당신은 포함 모두 #pragma 확인해야합니다 :)

+0

Great !!! It 작동 !! – moriya

1

당신은 당신이 #pragma include "library_include_path"#pragma link "library_name" 지시를 (그들은 메이크 교체)를 사용해야합니다 G-WAN 스크립트에서 타사 라이브러리를 사용하는 경우.

물론 C/C++ 에서처럼 #include 헤더를 사용하여 라이브러리에서 사용하는 정의를 추가해야합니다.

이것은 developers 웹 사이트에서 G-WAN PDF manual에 설명되어의 G-WAN FAQs, 다양한 라이브러리 (libcurl에, libmysql, libsqlite, libcairo, libmagick 등)에 의존하는 많은 서블릿 예제입니다. 여기