0
我正在爲此工作幾小時,我相信我忽略了某些內容。我是C++和編程的新手。 我試圖建立一個由多個.cpp文件組成的程序。關聯的頭文件位於include目錄中。我當然也告訴netbeans在哪裏搜索它們(Project >> Properties >> build >> C++ - Compiler >> include directories)。在G ++中使用Netbeans(C++)時未定義的引用錯誤
這是最主要的文件:
//main.cpp
#include "Eingabe_Konstanten.h"
#include "Stoffwerte.h"
#include "Zustandsgroessen.h"
#include <iostream>
using namespace std;
int main()
{
Eingabe_Konstanten ein;
cout << ein.Pi();
cin.get();
}
這就是相關headerfile 「Eingabe_Konstanten.h」(對不起,這是部分德國...;))
//Eingabe_Konstanten.h
#ifndef EINGABE_KONSTANTEN_H
#define EINGABE_KONSTANTEN_H
class Eingabe_Konstanten {
public:
double Pi();
double mStrom();
};
#endif /* EINGABE_KONSTANTEN_H */
有了相應。 cpp-file
//Eingabe_Konstanten.cpp
#include "Eingabe_Konstanten.h"
#include "InputOutput.h"
#include <string>
InputOutput io;
double Pi()
{
double pi = M_PI;
return pi;
}
double mStrom()
{
double m = io.lese(7);
return m;
}
lese()
是從文件中讀取行的方法。它在InputOutput類中。
//InputOutput.h
#ifndef INPUTOUTPUT_H
#define INPUTOUTPUT_H
#include <string>
class InputOutput {
public:
double lese(int);
};
#endif /* INPUTOUTPUT_H */
*************************************
//InputOutput.cpp
#include "InputOutput.h"
#include <iostream>
#include <string>
#include <sstream>
#include <limits>
#include <fstream>
#include <stdlib.h>
using namespace std;
double lese(int zeile)
{
ifstream datei("input.txt");
if(!datei.is_open())
{
cerr << "Fehler beim Oeffnen der Datei" << endl;
return 0;
}
for(; zeile > 1; --zeile)
datei.ignore(numeric_limits<streamsize>::max(), '\n');
string input;
if(!getline(datei, input))
{
cerr << "Fehler beim Lesen aus der Datei" << endl;
return 0;
}
double wert = atof(input.c_str());
return wert;
}
我認爲這是一個鏈接問題。因爲目標文件似乎沒有正確鏈接在一起,並且編譯器在連接過程之前不會發出抱怨。輸出看起來像這樣:
"/C/MinGW/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make.exe[1]: Entering directory `/d/Maschinenbau/Diplom/Diplomarbeit/Programm/Comp_Pred'
"/C/MinGW/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk dist/Debug/MinGW_TDM-Windows/comp_pred.exe
make.exe[2]: Entering directory `/d/Maschinenbau/Diplom/Diplomarbeit/Programm/Comp_Pred'
mkdir -p dist/Debug/MinGW_TDM-Windows
g++ -m32 -o dist/Debug/MinGW_TDM-Windows/comp_pred build/Debug/MinGW_TDM-Windows/_ext/725510466/Eingabe_Konstanten.o build/Debug/MinGW_TDM-Windows/_ext/725510466/InputOutput.o build/Debug/MinGW_TDM-Windows/_ext/725510466/Stoffwerte.o build/Debug/MinGW_TDM-Windows/_ext/725510466/Zustandsgroessen.o build/Debug/MinGW_TDM-Windows/main.o -Llib -lCoolProp
build/Debug/MinGW_TDM-Windows/_ext/725510466/Eingabe_Konstanten.o: In function `Z6mStromv':
d:/Maschinenbau/Diplom/Diplomarbeit/Programm/Comp_Pred/Eingabe_Konstanten.cpp:24: undefined reference to `InputOutput::lese(int)'
我很抱歉這個全面的描述,但我真的不知道該怎麼做。我會非常感謝任何幫助。
的功能,就是它了!非常感謝你! :) – clemensf