【问题标题】:Cannot run C++ code on the newly installed Visual Studio Code无法在新安装的 Visual Studio Code 上运行 C++ 代码
【发布时间】:2017-08-16 09:03:47
【问题描述】:

我做了以下尝试在 macOS 上设置 C++ 的开发环境,但没有成功。

  1. 我从微软网站下载了 Visual Studio Code 并正确安装。

  2. 我安装了 ms-vscode.cpptools 和 mitaki28.vscode-clang。

  3. 我安装了 gdb。

以下是我收到的警告:

ld:警告:忽略文件 /Users/andy/Documents/VS Code C++/Hello World/.vscode/tasks.json,文件是为不受支持的文件格式构建的( 0x7B 0x0A 0x20 0x20 0x20 0x20 0x22 0x76 0x65 0x72 0x73 0x69 0x6F 0x6E 0x22 0x3A )不是被链接的架构(x86_64):/Users/andy/Documents/VS Code C++/Hello World/.vscode/tasks.json

Undefined symbols for architecture x86_64:  
  "_main", referenced from:  
     implicit entry/start for main executable  
ld: symbol(s) not found for architecture x86_64  
clang: error: linker command failed with exit code 1 (use -v to see invocation)  

编辑 1:我的平台是 macOS。

编辑 2:我在尝试构建最简单的 Hello World 项目时出现了问题,因此问题不可能是我的 C++ 代码。但我几乎是一个新手,所以我不知道 .json 的东西是什么。

编辑3:我认为问题可能出在launch.json文件中,所以这是我的文件:

{
"version": "0.2.0",
"configurations": [
    {
        "name": "C++ Launch (GDB)",
        "type": "cppdbg",
        "request": "launch",
        "targetArchitecture": "x64",
        "program": "${file}.out",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceRoot}",
        "environment": [],
        "externalConsole": true,
        "preLaunchTask": "g++",
        "miDebuggerPath": "/usr/local/bin/gdb"
    }
]

}

【问题讨论】:

  • 0x7B 0x0A 0x20 0x20 0x20 0x20 0x22 0x76 0x65 0x72 0x73 0x69 0x6F 0x6E 0x22 0x3A -> something something 'version":' ?这很奇怪。为什么将 JSON 文件视为一些二进制对象/可执行文件?
  • 什么操作系统/平台?
  • Ref @paxdiablo 看起来您已将 Json 文件指定为要链接的目标文件。查看构建文件。
  • 你在这里确实没有提供足够的信息。操作系统?平台?你在哪一步得到错误?安装期间?安装什么?在构建期间?构建什么?
  • 显示的代码看起来像 ASCII 代码。例如。 0x7B{。考虑到这是一个ld 错误,您尝试链接一个 json 文件。链接器需要目标文件并抱怨 json 文件不是可识别的目标文件(这是事实)。可能,您的项目设置是错误的。顺便提一句。恕我直言,这不是 Mac OS/X 特定的问题。我从未尝试过,但我很确定 Windows 上 VS 中的链接器也无法链接 json 文件。

标签: c++ visual-studio-code


【解决方案1】:

您的项目中似乎没有{somefile}.cpp 文件(或该文件未编译)包含

int main() {
    ...
    return 0;
}

int main(int argc, char ** argv) {
    ...
    return 0;
}

功能。

您可以放心地忽略 tasks.json 警告 - 它被错误地传递给链接器输入,而链接器只是忽略了该文件。

【讨论】:

  • 我有一个名为 HelloWorld.cpp 的文件,并且有一个 int main() 只是为了打印 Hello World。
  • 那么它只是由于某种原因没有被编译。请发布构建过程的完整输出。
  • 上面发布的警告是 VS Code OUTPUT 窗口中的完整输出。在其他窗口中,什么都没有。
  • 你用过code.visualstudio.com/docs/languages/cpp的教程吗?重要的部分是使用 VS Code 生成 tasks.json 和 launch.json 文件。
  • 谢谢你,这行得通!!!但还有另一个问题。在 launch.json 中,我使用“${workspaceRoot}/HelloWorld.cpp.out”作为程序属性。但我希望它可以方便地用于其他项目。我可以为此目的使用什么表达方式?再次感谢您的有益建议。
【解决方案2】:

同样的问题,它可能与“Code Runner”插件冲突,在我删除预编译输出后,错误消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2022-11-08
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    相关资源
    最近更新 更多