从另一个文件(C++、QT)访问函数 Unresolved external

Accessing a function from another file (C++, QT) Unresolved external

我已经为此苦思冥想太久了,并且研究了所有我找不到问题的地方。

我正在用 QT 编写一个 GUI 程序,在主程序文件外部但在项目中的一些文件中有一些函数。结构是这样的:

Source files: 
main.cpp 
mainwindow.cpp
signal.cpp
signalparse.cpp

header files: 
mainwindow.h
signal.h
signalparse.h

信号是一个存储一些数据的对象。 Signalparse 使用信号,解析文本文件并将其读入信号。在将它放入我的 GUI 程序之前,我在准系统控制台应用程序上测试了这个功能,所以我知道它有效(有效)。

现在我发现自己试图从 mainwindow.cpp 文件中的 SignalParse.cpp 文件调用函数 ReturnSignal。

SignalParse.h is below:
#include<vector>
#include <iostream>
#include "signal.h"

void ParseLine(std::string*);
std::string ReturnTitle();
std::vector<Signal> ReturnSignal(std::string);

显示我已声明 ReturnSignal。

在 SignalParse.cpp 中函数定义为:

vector<Signal> ReturnSignal(string filename)
{
    //does stuff
}

在mainwindow.cpp里面我声明了一个

std::vector<Signal> signalList;

存储来自 ReturnSignal 的 returned 向量。

然后我用

signalList = ReturnSignal(signalFilePath);

在 mainwindow.cpp 中最终调用此函数和 return 我的数据。注释掉时,没有错误。但是,此行会导致错误:

mainwindow.obj:-1: error: LNK2019: unresolved external symbol "class std::vector<class Signal,class std::allocator<class Signal> > __cdecl ReturnSignal(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?ReturnSignal@@YA?AV?$vector@VSignal@@V?$allocator@VSignal@@@std@@@std@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z) referenced in function "private: void __cdecl MainWindow::on_file_open_triggered(void)" (?on_file_open_triggered@MainWindow@@AEAAXXZ)

我一辈子都弄不明白为什么这行不通。有人有什么想法吗?我已经找了几个小时了! 如果我找到解决方案,我很乐意重写这个问题以使其更普遍适用,但此刻我完全被难住了。 非常感谢。

编辑:正在使用的编译器是 Microsoft Visual C++ Compiler 12.0

经过一些严重的头痛之后,我找到了一个非常简单的解决方案。我只真正使用过命令行编译器或 Visual Studio,我没有想到这一点。

事实证明,为了修复我正在处理的大部分未解决的外部错误,我不得不简单地进入构建菜单,清理我的项目,然后 "Run qmake"。在此之后,我所有未解决的外部问题都消失了,我的程序开始运行了。

不知道为什么这么难找到这些信息,希望对有类似情况的人有所帮助。