问题:
使用VScode写C++,自定义了头文件,编译时一直报错,错误信息如下:
e:/Project/VSCODE/C++/library/test.cpp:7: undefined reference to `sssp(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char)'
collect2.exe: error: ld returned 1 exit status
一开始看了网上的各种解决途径,说明是下面这种原因,需要更换编译器版本
此错产生原因为:c++11与旧的c++库函数实现存在差异,当本地的c++代码动态库为旧版本c++库所实现,而编译器g++5,gcc5将其解释为std::__cxx11,就会出现未定义错误,那么需要指定编译器的版本为g++4,gcc4,再进行编译时就不会发生上述问题,
看了好多都是这么说,感觉和我的有些不同,就没有按照这样的方法修改
我的问题应该是自定义头文件引起的,后面在网上找来找去,终于找到解决问题的方法
解决:
在c_cpp_properties.json文件中,将头文件所在的路径添加到includePath中,如下:
在tasks.json中配置要让vscode编译cpp源文件,并让main函数调用。其中,-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名
在配置文件中添加上面的信息后,再编译就不再报错