【问题标题】:Configure VSCode for c++ dev in linux在 linux 中为 c++ dev 配置 VSCode
【发布时间】: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 to XOpenDisplay'` 是一个 linker 错误,告诉您链接器找不到函数 XOpenDisplay定义,因为编译器找到了 声明在标题中。
  • 我建议你在 Windows 上安装 Linux 子系统。我最近发现了它,它对我帮助很大。
  • @PeMaCN 尽量避免建议某人安装其他软件以另一种方式解决问题。该问题询问的是一个简单的编译问题,而不是其他软件可以做得更好。无论安装什么软件,都会存在完全相同的问题。更恰当的建议是打开开发人员命令提示符并学习如何从命令行使用外部库进行编译和链接——这样你就可以告诉 VS 你想要它做什么。

标签: c++ visual-studio-code


【解决方案1】:

VSCode 提示 #include X11/Xlib.h 所以我猜他知道去哪里找这个库

不,它没有。

未定义的引用是链接错误。编译代码时,您必须使用 -l 选项指定 X11 库,并使用 -L 选项指定其位置。例如。

g++ main.cpp -lX11library -L /path/to/X11/lib

【讨论】:

  • 您还必须通过在编译字符串中包含-lLibrary 来告诉链接器要链接哪个库。
  • 糟糕,错过了
猜你喜欢
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 2022-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多