使用visual studio code 写C++ 怎么样才能正确地引用其他文件的函数
使用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
因为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文件呢。
想要正确链接 cpp 文件,需要通过
-L
、-I
选项指定头文件和第三方依赖库推荐阅读文章:https://blog.csdn.net/sunshin...
你的c配置lauch.json文件里面在program里面要加入xx.out
"program": "${workspaceFolder}/${fileBasenameNoExtension}/XXX.out"。