나는 너무 오래 전에 내 머리를 꺾어 왔고, 무엇이 잘못되었는지를 찾을 수없는 모든 것을 연구했다.다른 파일에서 함수에 액세스하기 (C++, QT) 해결되지 않은 외부
저는 QT에서 GUI 프로그램을 작성 중이며 메인 프로그램 파일 외부의 일부 파일에는 있지만 프로젝트 내에서 몇 가지 기능이 있습니다. 구조는 다음과 같습니다.
Source files:
main.cpp
mainwindow.cpp
signal.cpp
signalparse.cpp
header files:
mainwindow.h
signal.h
signalparse.h
신호는 일부 데이터를 저장하는 객체입니다. Signalparse는 신호를 사용하고 텍스트 파일을 구문 분석하여 신호로 읽습니다. 필자는 barebones 콘솔 응용 프로그램에서이 기능을 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을 선언했음을 보여줍니다. mainwindow.cpp 내부
vector<Signal> ReturnSignal(string filename)
{
//does stuff
}
내가 ReturnSignal에서 반환 된 벡터를 저장하기 위해
std::vector<Signal> signalList;
를 선언 :로
내부 SignalParse.cpp 기능이 정의된다.
그때 나는 마지막으로이 함수를 호출하고 내 데이터를 반환 할 mainwindow.cpp 내부
signalList = ReturnSignal(signalFilePath);
를 사용합니다. 주석을 달았을 때 오류가 없습니다.
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)
나는 내 인생은 왜 늘 일을 알아낼 수 없습니다 위해 : 그러나,이 줄은 오류가 발생합니다. 누구든지 아이디어가 있습니까? 나는 지금 몇 시간 동안 찾고 있었다! 해결책을 찾으면 좀 더 일반적으로 적용 할 수있는 질문을 다시 쓰고 싶지만 지금은 완전히 혼란 스럽습니다. 고마워요. 편집
: 컴파일러를 사용하고 내가 아주 간단한 해결책을 발견 몇 가지 심각한 두통 이후의 Microsoft Visual C++ 컴파일러 12.0
어떤 컴파일러를 사용하고 있습니까? 너/메이크 파일은 뭐래? –
QtCreator 내에서 컴파일러를 사용하고 있습니다. 이 파일에는 포함 된 파일을 정의하는 .pro 파일이 있습니다. –
컴파일러에 컴파일 할 소스 파일이 제공되지 않았거나 링커에 컴파일러에서 생성되는 중간 바이너리 파일이 제공되지 않았을 수 있습니다. –