error: "undefined reference to" while compiling c++

error: "undefined reference to" while compiling c++

我在一个小的 C++ 应用程序中工作,我正在尝试使用 xdotool(libxdo:https://github.com/jordansissel/xdotool)。

我使用 "make" 命令构建了 xdotool,并将 libxdo.so 和 libxdo.so.3 放入 /usr/lib。和 xdo.h 到 /usr/local/include.

我正在尝试使用以下方法编译我的应用程序:

g++ -I /usr/local/include/ -L /usr/lib/ LinuxTest.cpp -lXtst -lX11 -lxdo

但我收到此错误:

undefined reference to `xdo_new(char const*)'
undefined reference to `xdo_move_mouse_relative(xdo const*, int, int)'

这是我的源代码:

#include <iostream>
#include <X11/Xlib.h>
#include <X11/keysym.h>
#include <X11/X.h>
#include <unistd.h>
#include <X11/extensions/XTest.h>
#include <xdo.h>

using namespace std;

#define KEYCODE XK_Tab
int mapa[2048];
void hook();

xdo_t* xdoMain;

int main() {
    for (int i=0;i<2048;i++){
       mapa[i]=0;
    }
    xdoMain = xdo_new(NULL);
    xdo_move_mouse_relative(xdoMain,200,200);
    hook(); //do some things using X11
    return 0;
}

我猜这是因为 xdo 是一个 C 库。
您正在链接和构建 C++ 应用程序。

因此您的编译器认为 xdo_new() 是一个 C++ 名称错位函数。但实际上它已链接到 libxdo 中。作为 C 名称损坏的函数。

我会试试这个:

extern "C" {
#include <xdo.h>
}

您基本上是在告诉编译器将 xdo 中的所有名称都视为 C 函数声明。只要没有 类 这应该有效(如果有 类 那么我的假设开始是不正确的)。