为 ZooKeeper 编译 C++ 客户端时获取未定义的引用

Get undefined reference when compiling C++ client for ZooKeeper

我尝试用 C++ 编译我的第一个程序,我在其中尝试连接到 ZooKeeper 并做一些其他事情。在我的代码中有这些行:

//test.cpp

#include "zookeeper.h"
... all other header files from zookeeper/include

void main_watcher (zhandle_t *zkh,
               int type,
               int state,
               const char *path,
               void* context)
{
    if(type == ZOO_SESSION_EVENT){
        if(state == ZOO_CONNECTED_STATE){
           ...
        }
        ...
    }
}

int main(){
   return 0;
}

但是当我编译这个 test.cpp 文件时(实际上,我向 zookeeper/.../build/usr/lib 提供 link 和所有包含文件的路径),我得到一个列表这些错误消息:

undefined reference to ZOO_SESSION_EVENT
undefined reference to ZOO_CONNECTED_STATE
...

我做错了什么?

你很可能忘记了 link again zookeeper。通常,您必须执行类似

的操作
g++ -lzookeper -o yourprogram yourprogram.c

也许是

-lzookeeper-mt

也许不是。通常,构建系统 的工作就是为您解决这些问题。