无法调用XInitThreads

时间:2014-05-10 19:34:15

标签: c++ sfml xlib

我已经编写了一个SFML C ++游戏,并尝试开始使用线程,但过了一段时间,一切都崩溃了。搜索后我发现修复似乎是调用XInitThreads(); 但这不会以某种方式起作用。

简化代码:

    #include <X11/Xlib.h>   

    int main() {        
    XInitThreads();
    //other stuff
    return 1337;
    }

我尝试编译时得到的错误消息是&#34;未定义对符号&#39; XInitThreads&#39;的引用。可能是头文件正在运行但是没有文件在哪里实现该方法?

3 个答案:

答案 0 :(得分:3)

“未定义的符号引用”是链接器错误,而不是编译器错误。如果收到此消息,则编译器已将文件编译成目标文件,但无法找到包含将目标文件链接到可执行文件的函数的共享库。

如果您正在使用gcc,通常意味着您必须添加一些-l标志,如下所示:

$ gcc prog.c -lX11

请注意编译器参数中-lX11的顺序很重要,如果这样做会出错:

$ gcc -lX11 prog.c
/tmp/ccBCxiFT.o: In function `main':
:(.text+0x5): undefined reference to `XInitThreads'
collect2: error: ld returned 1 exit status

答案 1 :(得分:0)

您应该将链接X11库设置-lX11添加到项目中。如果您使用Eclipse导航到 projectproperties - &gt; C / C ++ Build-&gt; Settings-&gt; Tool Settings-&gt; GCC Linker-&gt; Libraries并添加“X11”

答案 2 :(得分:0)

添加标题 -

#include<X11/Xlib.h>

使用 -

编译源代码

gcc <filename.extension> -lX11

在Ubuntu 16.04 LTS中测试