【发布时间】:2018-07-26 04:16:28
【问题描述】:
main.cpp:
#include <X11/Xlib.h>
#include <unistd.h>
int main()
{
Display *display = XOpenDisplay(0);
return 0;
}
抛出异常
对“XOpenDisplay”的未定义引用
我有这个库
/usr/include/X11/
VSCode 提示 #include X11/Xlib.h 所以我猜他知道在哪里寻找库。
构建任务:
"tasks": [
{
"label": "linux64",
"type": "shell",
"command": "g++",
"args": [
"-I",
"${workspaceFolder}/Headers/",
"-g",
"${workspaceFolder}/Sources/main.cpp",
"-o",
"HW"
],
"group": {
"kind": "build",
"isDefault": true,
}
}
]
请帮我配置VSCode
更新:
使用
"tasks": [
{
"label": "linux64",
"type": "shell",
"command": "g++-8",
"args": [
"${workspaceFolder}/Sources/main.cpp",
"-L",
"/usr/include/X11/",
"-lX11",
"-o",
"HW"
],
"group": {
"kind": "build",
"isDefault": true,
}
}
]
【问题讨论】:
-
您缺少要链接的库,例如
-lX11(即小 L),您可能需要-L /path/to/X11/lib来提供库搜索路径。undefined reference toXOpenDisplay'` 是一个 linker 错误,告诉您链接器找不到函数XOpenDisplay的定义,因为编译器找到了 声明在标题中。 -
我建议你在 Windows 上安装 Linux 子系统。我最近发现了它,它对我帮助很大。
-
@PeMaCN 尽量避免建议某人安装其他软件以另一种方式解决问题。该问题询问的是一个简单的编译问题,而不是其他软件可以做得更好。无论安装什么软件,都会存在完全相同的问题。更恰当的建议是打开开发人员命令提示符并学习如何从命令行使用外部库进行编译和链接——这样你就可以告诉 VS 你想要它做什么。