gpt4 book ai didi

c - 对 `memcached_exist' 的 undefined reference

转载 作者:行者123 更新时间:2023-11-30 19:15:57 24 4
gpt4 key购买 nike

我使用的是 C 而不是 C++

我尝试在 C 中使用 memcached_exist 但出现此错误:

undefined reference to `memcached_exist'

这是我的代码:

  #include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <libmemcached/memcached.h>


int main(int argc, char *argv[]) {

memcached_server_st *servers = NULL;
memcached_st *memc;
memcached_return rc;
char *key= "keystring";
char *value= "keyvalue";

// memcached_server_st *memcached_servers_pars (char *server_strings);
memc= memcached_create(NULL);

servers= memcached_server_list_append(servers, "localhost", 11211, &rc);
rc= memcached_server_push(memc, servers);
rc= memcached_set(memc, key, strlen(key), value, strlen(value), expire, flag);
rc = memcached_exist(memc, key, strlen(key));

我正在编译:-lmemcached -lmemcachedutil

此解决方案不起作用,因为我使用的是 C:

ibmemcached Linking Error: undefined reference to `memcached_exist'

最佳答案

请注意,为了提供简短的答案,我需要 mcve ,包括用于编译的完整命令,因为除了基本编译之外,这还需要一些额外的开关。然而,这个问题有一个决定性的答案……顺便说一句,你已经给了我们,但我们稍后会讨论这个问题。首先,让我们介绍一下更常见的原因。

这是一个链接器错误。链接器错误通常属于以下三类之一:

  • 编译/链接阶段缺少库。 The documentation表明您已链接到正确的库。
  • 链接顺序!在本例中,-lmemcached -lmemcachedutil 的位置非常重要。如果您的命令类似于 cc -lmemcached file.c,则这是您的(至少是部分)错误。它需要看起来更像:cc file.c -lmemcached...
  • 打印错误。基于the documentation尽管您提出了相关问题,但最初看起来这不是您的情况。但是,如果您更仔细地检查链接到的问题,您会发现也没有使用 C++!也许您的问题与该问题重复,当然,您没有提供与该问题一样多的信息。快速搜索the source code表示this function (memcached_exist)是从一个名为 exist.cc 的文件编译而来的,使用...你猜对了:C++ 编译器。因此,考虑到发生的名称修改(特别是因为实际函数不是使用extern "C"定义的),你会遇到一个打印错误,无论你是'我们愿意接受与否。您是否使用您链接到的问题中的命令(nm libmemcached.so | grep -i memcached_exist)观察到名称修改的存在(或缺乏)?如果您可以看到名称损坏,也许您应该 try the answer to the question you linked to, anyway ...

关于c - 对 `memcached_exist' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31482625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com