我写了一个简单的程序来测试 xdotool 是否可以满足我的要求。(嗯,不是真的。我的第一步是确定我是否可以调用 xdotool 库。)
#include <xdo.h>
#include <iostream>
using namespace std;
int main(){
cout << xdo_version() << endl;
xdo_new(NULL);
return 0;
}
但是,当我用 编译它时g++ -o a main.cpp libxdo.a -lXtst -lX11 -lXinerama -I ../test/xdotool-2.20110530.1
,我收到以下错误消息:
/tmp/ccW95RQx.o: In function `main':
main.cpp:(.text+0x5): undefined reference to `xdo_version()'
main.cpp:(.text+0x29): undefined reference to `xdo_new(char*)'
collect2: error: ld returned 1 exit status
make: *** [sendkey] Error 1
我没有使用 apt-get install 的开发包,因为它安装了一个动态库。所以,我做了一个 apt-get 源码并自己构建了这个库。我通过执行以下命令验证了 xdo_version 和 xdo_new 是静态库中定义的函数:
$ nm libxdo.a | grep xdo_version
00000000000002b0 T xdo_version
$ nm libxdo.a | grep xdo_new
0000000000004070 T xdo_new
0000000000003c90 T xdo_new_with_opened_display
如果我没记错的话,T
除了符号的名称意味着该函数已定义。
总之,我试图让上面的 C++ 片段成功编译并静态链接到 xdotool,但遇到了一些如上所述的错误。