错误:使用const std :: string&amp;的未定义的函数声明引用和const std :: vector <int>&amp; Code :: Blocks中的参数

时间:2018-05-06 08:01:20

标签: c++ compiler-errors stl codeblocks undefined-reference

尝试在Code :: Blocks 17.12(Windows 10,默认的MinGW GCC编译器)上编译C ++项目时出错。功能

std::vector<int> crib_drag(const std::string&, const std::vector<int>&);

在crib_drag.h中声明,我通过C :: B对话框创建了它(crib_drag.h #includes vector和string)。该函数在crib_drag.cpp中定义,也是通过C :: B对话框创建的:

#include "crib_drag.h"
std::vector<int> crib_drag(const std::string& term, const std::vector<int>& xored)
{
    std::vector<int> ret;
    //Do some stuff
    return ret;
}

main.cpp包含crib_drag.h     #include“crib_drag.h” 主要是,调用crib_drag。 编译为crib_drag函数提供了未定义的引用错误。我的理解是我不需要改变链接器设置,因为所有文件都是使用C :: B项目中的默认设置创建的,并且我没有更改任何文件的文件路径。

有谁可以解释这里出了什么问题以及如何解决?提前谢谢。

构建日志如下所示:

-------------- Build: Debug in CribDrag (compiler: GNU GCC Compiler)---------------

mingw32-g++.exe  -o bin\Debug\CribDrag.exe obj\Debug\crib_drag.o obj\Debug\main.o   
obj\Debug\main.o: In function `main':
C:/[Long file path omitted]/CribDrag/main.cpp:13: undefined reference to `crib_drag(std::string const&, std::vector<int, std::allocator<int> > const&)'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
2 error(s), 0 warning(s) (0 minute(s), 0 second(s))

主:

#include <iostream>
#include "crib_drag.h"
#include <vector>

using namespace std;
int main() {
    vector<int> xored1{14, 6, 31, 30, [omitted for brevity]};
    string word("overnight");
    vector<int> found_at = crib_drag(word, xored1);//Problem line
    //.....
    return 0;
}

0 个答案:

没有答案