Ошибка: неопределенная ссылка на объявление функции с const std :: string & и const std :: vector <int>& параметрами в Code :: Blocks - PullRequest
0 голосов
/ 06 мая 2018

Я получаю сообщение об ошибке при попытке скомпилировать проект C ++ в Code :: Blocks 17.12 (Windows 10, компилятор MinGW GCC по умолчанию). Функция

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

объявлено в crib_drag.h, который я создал через диалог C :: B (crib_drag.h #include вектор и строка). Функция определена в файле 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;
}
...