4

我目前正在尝试使用 libx11 截屏

#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <stdio.h>

int main(void) {
XImage* pic;
Display* dpl;
unsigned int buffer_size;

dpl = XOpenDisplay("127.0.0.1:0.0");

pic = XGetImage(dpl, RootWindow(dpl, DefaultScreen(dpl)), 10, 10, 201, 201,
        AllPlanes, ZPixmap);
}

如果我使用 -lX11 编译代码并运行它,我会不断遇到分段错误。有任何想法吗?

提前致谢!

4

2 回答 2

1

X11 服务器通常不侦听 TCP/IP localhost,而是侦听 Unix 套接字。无论如何,您不应该硬编码 X11 服务器的地址。试试这个:

dpl = XOpenDisplay(NULL);
assert(dpl);
于 2012-04-23T17:03:00.917 回答
1

您应该检查是否dpl为 NULL。

我有根据的猜测是该 ip 无法正常工作。大多数发行版不允许通过 tcp 套接字访问 xserver,所以我猜你必须启用它们(它们被 nolisten 禁用)。

于 2012-04-23T17:06:10.323 回答