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 函数声明。只要没有 类 这应该有效(如果有 类 那么我的假设开始是不正确的)。
我在一个小的 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 函数声明。只要没有 类 这应该有效(如果有 类 那么我的假设开始是不正确的)。