无法调用 XInitThreads

use*_*800 6 c++ xlib sfml

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

简化代码:

    #include <X11/Xlib.h>   

    int main() {        
    XInitThreads();
    //other stuff
    return 1337;
    }
Run Code Online (Sandbox Code Playgroud)

我尝试编译时收到的错误消息是“对符号‘XInitThreads’的未定义引用。难道头文件正在工作,但没有实现该方法的文件?

Lie*_*yan 11

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

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

$ gcc prog.c -lX11
Run Code Online (Sandbox Code Playgroud)

请注意,-lX11编译器参数中的顺序很重要,如果你这样做,你会得到一个错误:

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