You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code中使用CS50库遇链接错误:_get_string符号未定义

VS Code中使用CS50库编译时出现Undefined symbols错误的解决方法

问题背景

代码已正确引入<cs50.h>头文件,但编译时出现链接错误,提示找不到_get_string符号:

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    string s = get_string("Input: ");
    printf("Output: %s\n", s);
}

错误信息:

Undefined symbols for architecture x86_64:
  "_get_string", referenced from:
      _main in fileone-18f2ad.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [fileone] Error 1

问题原因

<cs50.h>仅声明了get_string等函数的接口,函数的具体实现存放在CS50库文件中。编译时若未指定链接该库,链接器无法找到函数实现,从而抛出上述错误。

解决方法

1. 命令行编译添加链接参数

使用clang或gcc编译代码时,在命令末尾加上-lcs50参数,告知链接器需要链接CS50库:

clang your_file.c -o your_file -lcs50

或

gcc your_file.c -o your_file -lcs50

2. 配置VS Code编译任务(tasks.json)

若使用VS Code内置编译功能,修改.vscode/tasks.json文件,在编译参数中添加-lcs50:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: clang 生成活动文件",
            "command": "/usr/bin/clang",
            "args": [
                "-fcolor-diagnostics",
                "-fansi-escape-codes",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}",
                "-lcs50"  // 新增链接参数
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": ["$gcc"],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "编译器: /usr/bin/clang"
        }
    ]
}

保存文件后,再次编译即可自动链接CS50库。

3. 确认CS50库已安装

若上述方法无效,需先确认系统中已安装CS50库:

  • macOS:通过Homebrew安装:brew install cs50
  • Linux:使用包管理器安装,或从CS50官方渠道下载库文件并配置环境

内容的提问来源于stack exchange,提问作者icedespressodev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 12:10:37