我正在使用一个小小的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;
}
答案 0 :(得分:1)
我猜这是因为xdo
是一个C库
您正在链接和构建C ++应用程序。
因此,您的编译器认为xdo_new()
是一个C ++名称损坏函数。但实际上它已经与libxdo相关联。作为C名称错位函数。
我会试试这个:
extern "C" {
#include <xdo.h>
}
您基本上是在告诉编译器将xdo中的所有名称视为C函数声明。只要没有类,这应该有效(如果有类,那么我的假设开始时是不正确的。)