使用visual studio code 写C++ 怎么样才能正确地引用其他文件的函数

发布于 2022-09-07 20:32:16 字数 1023 浏览 10 评论 0

使用Visual studio code 配置好C++开发环境后想在main函数里引用其他文件的函数,但是在Mac下总是报Undefined symbols for architecture x86_64:错误

代码如下:
a.h文件

int func();

a.cpp文件

#include <iostream>
#include "a.h"
using namespace std;
int func(){
    return 0;
}

main.cpp文件

#include <iostream>

#include "a.h"

using namespace std;
int main()
{
    int b = func();
    cout << b << endl;
}

按F5 启动调试 输出:

> Executing task: g++ /Users/stanhu/Desktop/Git/Foundation/CPP_Learn/main.cpp -o /Users/stanhu/Desktop/Git/Foundation/CPP_Learn/main.out -g -Wall -fcolor-diagnostics -std=c++11 <

Undefined symbols for architecture x86_64:
  "func()", referenced from:
      _main in main-d53c96.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
The terminal process terminated with exit code: 1

怎么解决这个问题呢。另外,如果怎么正常引用第三方的h文件?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

寂寞清仓 2022-09-14 20:32:16

因为g++不会正确的编译其他的CPP文件,你可以看VSCode的命令:
g++ /Users/stanhu/Desktop/Git/Foundation/CPP_Learn/main.cpp -o /Users/stanhu/Desktop/Git/Foundation/CPP_Learn/main.out -g -Wall -fcolor-diagnostics -std=c++11
只编译了main.cpp文件而没有编译a.cpp文件,所以会出现symbols for architecture x86_64错误
所以正确的做法是:g++ main.cpp a.cpp -o main.out
再执行./main.out
就没问题了,所以现在问题出来了,那么怎么样才能让VSCode正确的编译所有链接的CPP文件呢。

递刀给你 2022-09-14 20:32:16

想要正确链接 cpp 文件,需要通过 -L-I 选项指定头文件和第三方依赖库

推荐阅读文章:https://blog.csdn.net/sunshin...

还在原地等你 2022-09-14 20:32:16

你的c配置lauch.json文件里面在program里面要加入xx.out

"program": "${workspaceFolder}/${fileBasenameNoExtension}/XXX.out"。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文