Я слишком долго бил головой об этом и исследовал все, что я не могу найти, что не так.Доступ к функции из другого файла (C++, QT) Неразрешенный внешний
Я пишу программу GUI в QT и имею несколько функций в некоторых файлах, внешних по отношению к основному программному файлу, но в рамках проекта. Структура выглядит примерно так:
Source files:
main.cpp
mainwindow.cpp
signal.cpp
signalparse.cpp
header files:
mainwindow.h
signal.h
signalparse.h
Сигнал - это объект, в котором хранятся некоторые данные. Signalparse использует сигнал, анализирует текстовый файл и считывает его в сигнал. Я тестировал эту функциональность в консольном приложении barebones перед тем, как поместить ее в свою программу GUI, поэтому я знаю, что она работает (работает).
Теперь я пытаюсь вызвать функцию ReturnSignal из файла SignalParse.cpp внутри файла mainwindow.cpp.
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.
Затем я использую
signalList = ReturnSignal(signalFilePath);
внутри mainwindow.cpp, наконец, вызвать эту функцию и возвращать мои данные. При комментировании ошибок нет. Однако эта строка вызывает ошибку:
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> >)" ([email protected]@[email protected]@@[email protected]@@@[email protected]@@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) referenced in function "private: void __cdecl MainWindow::on_file_open_triggered(void)" ([email protected]@@AEAAXXZ)
Я не могу на всю жизнь понять, почему это не работает. У кого-нибудь есть идеи? Я искал часы сейчас! Я хотел бы переписать вопрос, чтобы быть более общеприменимым, если я найду решение, но на данный момент я полностью в тупике. Большое спасибо.
EDIT: Компилятор используется в Microsoft Visual C++ Compiler 12.0
Какой компилятор вы используете? Что вы говорите/makefile? –
Я использую компилятор в QtCreator. Он имеет .pro-файл, который определяет, какие файлы включены. –
Возможно, вашему компилятору не даны исходные файлы для компиляции, или вашему компоновщику не предоставляются промежуточные двоичные файлы, которые генерирует компилятор. –