0

当我在我的 ubuntu 上运行 libmemcached 示例代码时,它给了我错误“未定义对 `memcached_create' 的引用”,任何人都可以帮忙吗?谢谢

#include <libmemcached/memcached.h>

int main(int argc, char **argv) {  
  //memcached_servers_parse (char *server_strings); 
  memcached_server_st *servers = NULL;
  memcached_st *memc;
  memcached_return rc;
  char *key= "keystring";
  char *value= "keyvalue";

  memc= memcached_create(NULL);
  servers= memcached_server_list_append(servers, "localhost", 11211, &rc);   rc= memcached_server_push(memc, servers);

  if (rc == MEMCACHED_SUCCESS)
    fprintf(stderr,"Added server successfully\n");   else
    fprintf(stderr,"Couldn't add server: %s\n",memcached_strerror(memc, rc));

  rc= memcached_set(memc, key, strlen(key), value, strlen(value), (time_t)0, (uint32_t)0);

  if (rc == MEMCACHED_SUCCESS)
    fprintf(stderr,"Key stored successfully\n");   else
    fprintf(stderr,"Couldn't store key: %s\n",memcached_strerror(memc, rc));

  return 0;

}
4

3 回答 3

3

传递-lmemcached给 GCC。这告诉它链接到libmemcached.so共享库。

于 2010-09-19T01:26:37.383 回答
0

当我构建库(libmemcached)时,它只构建静态库,当我链接我的程序(上面提到的)时,它给了我

$ gcc MyMemClient.c  -o MyMemClient -L/usr/local/lib/libmemcached.a
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0x1f): undefined reference to `_memcached_create'
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0x58): undefined reference to `_memcached_server_list_append'
//ccQEXVjv.o:MyMemClient.c:(text+0x6d): undefined reference to `_memcached_server_push'
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0xc1): undefined reference to `_memcached_strerror'
/tmpccQEXVjv.o:MyMemClient.c:(.text+0x12a): undefined reference to `_memcached_set'
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0x170): undefined reference to `_memcached_strerror'
/tmp/ccQEXVjv.o:MyMemClient.c:(.text+0x199): undefined reference to `_memcached_server_free'
//ccQEXVjv.o:MyMemClient.c:(.text+0x1a4): undefined reference to `_memcached_free'
ld returned 1 exit status
于 2011-01-31T11:58:15.610 回答
0
  1. 打开您的终端并将目录更改为未压缩的 libmemcached。
  2. 类型./configure
  3. 类型make
  4. 在您的 C 项目中,右键单击并选择“属性”。在“链接器”中添加“libmemcached.so”库并记住添加库目录(指向您的目录的链接包含 libmemcached.so)。
于 2011-11-21T04:04:54.540 回答