在 Solaris 11 上运行以下程序时遇到问题。XOpenDisplay 函数始终返回 NULL。相同的程序在 Solaris 10 上运行良好。
#include <stdio.h>
#include <X11/Xlib.h>
int main(int argc, char** argv) {
Display *ptr = 0;
ptr = XOpenDisplay("machine_name:0.0");
if (0 == ptr)
{
printf("NULL received\n");
}
else
{
printf("Valid pointer received\n");
}
return 0;
}
在调查期间,我发现 Solaris 11 不接受使用 TCP 协议的直接 X11 连接。我使用以下命令为 X11 服务器启用了 TCP。
svccfg -s x11-server setprop options/tcp_listen=true
但是在调用函数 XOpenDisplay 期间仍然返回 NULL,现在我收到错误为“未指定协议”。