link2001错误,附头文件和错误信息!
小弟做了一个简单的矩阵算法,编译完源文件后link出问题。好像是找不到函数,但是以下函数都有定义,也在main中include了,不知道错在哪里,恳请各位大虾指点!万分感激!
头文件如下:
#ifndef _COMPLEX_H_
#define _COMPLEX_H_
#include <iostream>
using std::istream;
using std::ostream;
template <class D> class complex
{
friend ostream &operator<<(ostream &, const complex<class D> &);
friend istream &operator>>(istream &, complex<class D> &);
public:
complex (D=0.0, D=0.0); //constructor
complex operator+(const complex &) const; //plus
complex operator-(const complex &) const; //minus
complex operator*(const complex &) const; //multiplication
complex operator/(const complex &) const; //division
complex &operator=(const complex &); //overload assign
D real() const; //get real part
D imag() const; //get imaginary part
complex & conj(); //get conjugate
bool operator==(const complex &); //equal
bool operator!=(const complex &); //unequal
void Print() const; //output
private:
D rl; //real part
D im; //imaginary part
};
#endif
错误信息如下:
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: class complex<double> __thiscall complex<double>::operator-(class complex<double> const &)const " (??G?$complex@N@@QBE?AV0@ABV0@@Z)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: class complex<double> __thiscall complex<double>::operator+(class complex<double> const &)const " (??H?$complex@N@@QBE?AV0@ABV0@@Z)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: double __thiscall complex<double>::imag(void)const " (?imag@?$complex@N@@QBENXZ)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: class complex<double> __thiscall complex<double>::operator/(class complex<double> const &)const " (??K?$complex@N@@QBE?AV0@ABV0@@Z)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: double __thiscall complex<double>::real(void)const " (?real@?$complex@N@@QBENXZ)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: class complex<double> __thiscall complex<double>::operator*(class complex<double> const &)const " (??D?$complex@N@@QBE?AV0@ABV0@@Z)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: class complex<double> & __thiscall complex<double>::conj(void)" (?conj@?$complex@N@@QAEAAV1@XZ)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: class complex<double> & __thiscall complex<double>::operator=(class complex<double> const &)" (??4?$complex@N@@QAEAAV0@ABV0@@Z)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: __thiscall complex<double>::complex<double>(double,double)" (??0?$complex@N@@QAE@NN@Z)
Debug/InverseMatrix.exe : fatal error LNK1120: 9 unresolved externals
Error executing link.exe.
多谢!
头文件如下:
#ifndef _COMPLEX_H_
#define _COMPLEX_H_
#include <iostream>
using std::istream;
using std::ostream;
template <class D> class complex
{
friend ostream &operator<<(ostream &, const complex<class D> &);
friend istream &operator>>(istream &, complex<class D> &);
public:
complex (D=0.0, D=0.0); //constructor
complex operator+(const complex &) const; //plus
complex operator-(const complex &) const; //minus
complex operator*(const complex &) const; //multiplication
complex operator/(const complex &) const; //division
complex &operator=(const complex &); //overload assign
D real() const; //get real part
D imag() const; //get imaginary part
complex & conj(); //get conjugate
bool operator==(const complex &); //equal
bool operator!=(const complex &); //unequal
void Print() const; //output
private:
D rl; //real part
D im; //imaginary part
};
#endif
错误信息如下:
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: class complex<double> __thiscall complex<double>::operator-(class complex<double> const &)const " (??G?$complex@N@@QBE?AV0@ABV0@@Z)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: class complex<double> __thiscall complex<double>::operator+(class complex<double> const &)const " (??H?$complex@N@@QBE?AV0@ABV0@@Z)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: double __thiscall complex<double>::imag(void)const " (?imag@?$complex@N@@QBENXZ)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: class complex<double> __thiscall complex<double>::operator/(class complex<double> const &)const " (??K?$complex@N@@QBE?AV0@ABV0@@Z)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: double __thiscall complex<double>::real(void)const " (?real@?$complex@N@@QBENXZ)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: class complex<double> __thiscall complex<double>::operator*(class complex<double> const &)const " (??D?$complex@N@@QBE?AV0@ABV0@@Z)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: class complex<double> & __thiscall complex<double>::conj(void)" (?conj@?$complex@N@@QAEAAV1@XZ)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: class complex<double> & __thiscall complex<double>::operator=(class complex<double> const &)" (??4?$complex@N@@QAEAAV0@ABV0@@Z)
fnMatrixInvert.obj : error LNK2001: unresolved external symbol "public: __thiscall complex<double>::complex<double>(double,double)" (??0?$complex@N@@QAE@NN@Z)
Debug/InverseMatrix.exe : fatal error LNK1120: 9 unresolved externals
Error executing link.exe.
多谢!
...全文
相关推荐
vc++中 LINK2001错误
vc++中出现LINK2001错误,解决方法文章所述
VC中LINK 2001 和 LINK 2009 的错误的解决方法
最近将两个开源C++项目编译成windows版本的时候遇到很多问题,关键是两个项目经过同事的修改之后,一个项目引用了另一个项目,两个项目的头文件中都有一些跨平台的关于数据类型,以及一些通用函数的定义,所以导致有冲突,编译的时候总是报错,报的最多的是“无法解析的外部符号”,经过近3天的折腾总算都通过了,这里是一些总结。 首先,关于VC中的lib,与linux下的静态库是不同的,在VC中编译动态库的时候会生成一个lib和一个对应的dll,使用者在使用的时候需要包含头文件以及连接到该lib,在发布最终程序的时候则需要将对应的dll拷贝到发布目录。当然也可以使用LoadLibrary的方式在程序中动态
Link2001常见错误
引起LNK2001 的常见错误及错误分析,解决方法
link错误解决办法
解决C++中的link错误,包括线程等。该资料室一个word文档,经过网上资料整理。很方便应用
最常见的VC++编译错误信息_fatal_error
最常见的VC++编译错误信息_fatal_error


