0

我是 gwan 的新手,目前正在编写一个简单的程序来从 MongoDB 中插入和选择数据。编译完Mongo-c-driver,把Mongo标准库放到/usr/lib/下,发现gwan/csp文件夹下的程序报错:

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

谁能帮我?非常感谢 :)

4

2 回答 2

1

如果您使用 G-WAN 脚本中的第三方库,则必须使用#pragma include "library_include_path"and#pragma link "library_name"指令(它们替换了 makefile)。

当然,与 C/C++ 一样,必须使用 #include 标头来添加库使用的定义。

这记录在G-WAN PDF 手册开发者网站、G-WAN 常见问题解答以及许多依赖于各种库(libcurl、libmysql、libsqlite、libcairo、libmagick 等)的 servlet 示例中。

于 2013-04-13T10:13:56.140 回答
1

这是 gwan + mongoDB 的一个小示例

首先:安装mongoDB c驱动(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

它将安装在 /usr/local 文件夹中,如果需要,您需要对其进行调整,或者只需将生成的文件复制到 /usr/lib 和 /usr/include/

然后以 root 身份运行 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
// ============================================================================

享受 :)

于 2013-04-22T18:36:56.877 回答