将Netbeans(C++)与G++一起使用时出现未定义的引用错误
Undefined reference errors when using Netbeans (C++) with G++
我从几个小时开始就在做这件事,我相信我忽略了一些东西。我是C++和编程的新手。我正在尝试构建一个由几个.cpp文件组成的程序。相关的头文件位于include目录中。当然,我还告诉了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();
}
这就是相关的头文件"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文件
//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)'
我很抱歉做了这么全面的描述,但我真的不知道该怎么办。如果有任何帮助,我将不胜感激。
您已经将lese()
函数定义为独立函数,但您需要它成为InputOutput
类的成员。所以
double lese(int zeile)
应该是
double InputOutput::lese(int zeile)
Eingabe_Konstanten
类的函数也是如此
相关文章:
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在C++中使用内联方法时出现未定义的符号错误
- 尝试运行 wasm 函数时出现模块未定义错误
- c++中数组的未定义错误
- 基类未定义.错误 C2504
- 获取线函数未定义错误。无法在字符串中保存可验证的内容
- 对于我的 ComplexNumber 中的某些方法,我得到了一个奇怪的未定义错误引用.cpp,不过我对模板很陌生
- 类类型重定义和基类未定义错误
- C 中的基类未定义错误
- QML[未定义]错误
- 如何构建使用 OpenCV 的 XCode 6 iOS 应用程序 - 未定义错误__cplusplus
- 变量未定义错误
- 静态方法声明但未定义错误c++
- c++ cocos-2d-x未定义错误
- 基类未定义错误(C2504)
- 单例作为模板,未定义错误
- Solaris库与STLport4.6.2链接,出现与ostream相关的未定义错误