【发布时间】:2014-02-26 11:26:20
【问题描述】:
我正在尝试使我的程序正常工作(与之前的程序不同)并且我仍然遇到一些编译器/链接器错误我不知道如何修复,谁能指导我一些解决链接器/编译器或其他问题的方法是吗?
这是我得到的构建日志:
-------------- Build: Debug in lab1hwfinal (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -Wall -fexceptions -g -I..\Documents -c
C:\Users\Dekkiller\Documents\lab1hwfinal\main.cpp -o obj\Debug\lab1hwfinal\main.o
C:\Users\Dekkiller\Documents\lab1hwfinal\main.cpp: In function 'int main()':
C:\Users\Dekkiller\Documents\lab1hwfinal\main.cpp:19:5: error: 'complexType' was not
declared in this scope
complexType sum;
^
C:\Users\Dekkiller\Documents\lab1hwfinal\main.cpp:19:17: error: expected ';' before
'sum'
complexType sum;
^
C:\Users\Dekkiller\Documents\lab1hwfinal\main.cpp:26:15: error: 'exit' was not declared
in this scope
exit(1);
^
C:\Users\Dekkiller\Documents\lab1hwfinal\main.cpp:45:38: error: 'atof' was not declared
in this scope
realpart= atof(strone.c_str());
^
C:\Users\Dekkiller\Documents\lab1hwfinal\main.cpp:48:21: error: expected ';' before
'outpobj'
complexType outpobj(realpart, imaginarypart);
^
C:\Users\Dekkiller\Documents\lab1hwfinal\main.cpp:51:54: error: 'outpobj' was not
declared in this scope
outputfile << "Object " << counter << "-" << outpobj << endl;
^
Process terminated with status 1 (0 minute(s), 0 second(s))
6 error(s), 0 warning(s) (0 minute(s), 0 second(s))
这是我的主文件:
#include "Complex.h"
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
ofstream outputfile;
ifstream inputfile;
string str;
double realpart;
double imaginarypart;
int symbol;
char ch;
string strone;
string strtwo;
complexType sum;
int counter = 0;
inputfile.open("complex.txt");
if(inputfile.fail())
{
cout << "File opening failed." << endl;
exit(1);
}
outputfile.open("complexObj.txt");
inputfile >> str;
while(inputfile)
{
symbol=str.find("+");
ch = '+';
if(symbol < 0)
{
symbol = str.find("-");
ch = '-';
}
stringstream streamin(str);
getline(streamin, strone, ch);
getline(streamin, strtwo, 'i');
realpart= atof(strone.c_str());
imaginarypart= atof(strtwo.c_str());
complexType outpobj(realpart, imaginarypart);
counter++;
outputfile << "Object " << counter << "-" << outpobj << endl;
inputfile.close();
outputfile.close();
return 0;
}
}
我的头类文件:
#ifndef COMPLEX_H
#define COMPLEX_H
#include <iostream>
class complexType
{
friend std::ostream& operator<<(std::ostream& os, const complexType& obj);
public:
complexType();
complexType(double r, double i);
complexType operator+(const complexType& objtwo);
private:
double real;
double imagine;
};
#endif // COMPLEX_H
这是我的班级 cpp 文件:
#include "Complex.h"
#include <iostream>
using namespace std;
complexType::complexType()
{
real=0;
imagine=0;
}
complexType::complexType(double r, double i)
{
real=r;
imagine=i;
}
ostream& operator<<(ostream& os, const complexType& obj)
{
os << obj.real << "," << obj.imagine;
return os;
}
complexType complexType::operator+(const complexType& objtwo)
{
complexType sum;
sum.real = real + objtwo.real;
sum.imagine = imagine + objtwo.imagine;
return sum;
}
很抱歉问了这样类似的问题,但我不知道我的链接器或编译器出了什么问题。
【问题讨论】:
-
你用的是什么编译器?文件是否在同一目录中?它们被命名为“Complex.h”和“Complex.cpp”吗?
-
您好,我正在使用所选编译器的 GNU GCC 编译器,我相信我安装代码块时附带的编译器是 MinGW。
-
确保您的文件
Complex.h和Complex.cpp与您的主文件位于同一目录中,或者位于您使用-I参数引用的Documents文件夹中。 (不过,如果它们在Documents中,那么您也必须在命令行中明确链接Complex.o。最简单的方法是将所有文件放入同一个文件夹中。)
标签: c++ linker linker-errors