错误LNK1120:1无法解析的外部错误LNK2019:无法解析的外部符号!虽然编译
我得到的ERROR LNK1120: 1 unresolved externals & ERROR LNK2019: unresolved external symbol !
在编译错误LNK1120:1无法解析的外部错误LNK2019:无法解析的外部符号!虽然编译
某些线程 - 我结束了,而搜索 - 说的是一些关于类的定义和其他那是后话与.cpp
/.h
文件
的错误:
ERROR LNK1120: 1 unresolved externals.
ERROR LNK2019: unresolved external symbol "public: __thiscall bandera_Triang::~bandera_Triang(void)" ([email protected]@[email protected]) referenced in function _main.
下面是代码:
#include <iostream>
using namespace std;
class bandera_Triang {
private:
float aSide, bSide, cSide;
public:
bandera_Triang(){ //Cost. sin Param...
aSide = 0;
bSide = 0;
cSide = 0;
}
bandera_Triang(float A, float B, float C){ //Const. con Param...
aSide = A;
bSide = B;
cSide = C;
}
//Sets...
void set_A(float A){ aSide = A; }
void set_B(float B){ bSide = B; }
void set_C(float C){ cSide = C; }
//Gets...
float get_A(){ return aSide; }
float get_B(){ return bSide; }
float get_C(){ return cSide; }
~bandera_Triang(); //destructor...
bool esTriang(){ //Desigualdad Triangular...
if (aSide < bSide + cSide && bSide < aSide + cSide && cSide < aSide + bSide) {
return true;
}
else
return false;
}
string triangOno(bool esTriang()){ //Print si es o no triangulo...
if (esTriang() == true){
return "Es Triangulo.";
}
else { return "NO es Triangulo."; }
}
string tipoTriang(){
if (aSide == bSide && bSide == cSide){
return "El triangulo es Equilatero.";
}
else
if (aSide == bSide || aSide == cSide || bSide == cSide){
return "El triangulo es Isosceles. ";
}
return "El triangulo es Escaleno.";
}
float arTriang(float aSide, float bSide, float cSide){ //Area Triangulo con F.Heron.
float lado_A, lado_B, lado_C, SemiPerim, areaTriang; //Variables locales para calculo.
SemiPerim = (lado_A + lado_B + lado_C)/2; //Calculo de Semiperimetro.
areaTriang = sqrt(SemiPerim * (SemiPerim - lado_A) * (SemiPerim - lado_B) * (SemiPerim - lado_C));
return areaTriang;
}
string printArea(float arTriang){ cout << "El area del Triangulo es: " << arTriang << "cm2." << endl; } //Imprime Area :)
}; //Fin Clase Triangulo
//Inicia Main
int main(){
bandera_Triang triangA;
system("pause");
}
有两个步骤来创建可执行文件,编译和链接。在编译阶段,您有时只做出承诺,例如“函数int foo(float)
”,即使该函数不是此编译单元的一部分。编译器会接受你的话,只能插入一个占位符。稍后,链接程序将汇编程序的不同部分并解析该占位符。由于它没有找到承诺的功能,因此出错。
承诺函数是析构函数,它声明了(~bandera_Triang();
)但从未实际提供。如果你没有承诺提供一个,编译器会为你创建这个特殊的函数,所以我建议你删除声明。为了让老师知道你考虑过这个,你可以写这样的:
// default dtor is fine
// ~bandera_Triang();
,或者你可以用一个空的身体实现它。
嗨, 问题是这是一个任务和析构函数必须包括(所以老师知道我知道这是一个析构函数) 你能告诉我使用析构函数的写入方式吗? 先生,非常感谢。 – 2015-04-05 07:30:41
再次感谢您的协助,先生。有一个很好的。 – 2015-04-05 07:38:36
我也有同样的错误。我只是更新到Visual Studio SP1。 也阅读此更多信息: https://msdn.microsoft.com/en-us/library/799kze2z.aspx – 2015-04-05 07:13:30
它告诉你,你还没有定义析构函数(〜bandera) – cup 2015-04-05 07:20:41
嗨,是的,虽然我正在等待答复,我看了一下并评论了析构函数并编译了它......你能告诉我它有什么问题吗? 感谢回复! – 2015-04-05 07:26:21