C++链接错误LD返回1退出状态

C++链接错误LD返回1退出状态,c++,syntax,compiler-errors,linked-list,C++,Syntax,Compiler Errors,Linked List,我试图编译,但我不断得到这个错误,有人看到我的错误在哪里吗 C:\Users\BRIAN'~1\AppData\Local\Temp\cc2Feaaa.o.text+0x368在函数'main'中: [Linker error]对'secantdouble,double,double,double,double,double,double,double&,int&,double'的未定义引用 C:\Users\BRIAN'~1\AppData\Local\Temp\cc2Feaaa.o.text

我试图编译,但我不断得到这个错误,有人看到我的错误在哪里吗

C:\Users\BRIAN'~1\AppData\Local\Temp\cc2Feaaa.o.text+0x368在函数'main'中:

[Linker error]对'secantdouble,double,double,double,double,double,double,double&,int&,double'的未定义引用

C:\Users\BRIAN'~1\AppData\Local\Temp\cc2Feaaa.o.text+0x368 ld返回了1个退出状态

using namespace std;
#include<iostream>
#include<cmath>
#include<iomanip>
#include<fstream>
// Declaration of functions used
void writetable (double, double, double, double);
void secant(double, double, double, double, double, double, double, double, double&, int&, double);
void writedata (double, double, double);
double fx( double, double, double, double, double, double, double);

const double tol=0.0001;    // Tolerance for convergence
const int max_iter=50;      // Maximum iterations allowed
// main program
int main()
{
    int iteration;          // Number of iterations

    double  kr, uc, q, b, radians;

    double x0, x1;          // Starting values for x
    double root;           // Root found by secant method
const double PI = 4.0*atan(1.0);
ifstream datain ("shuttle.txt");
ofstream dataout ("results.txt");
datain >> kr >> uc >> q >> b;
x0= 1000;
x1 = 200;
for (double velocity = 16000; velocity <= 17500; velocity += 500)
{
        for (double angle = 10; angle <= 70; angle += 15)
        {
                  radians= angle * PI/180  ;
                  cout << velocity << endl;
                  cout << radians << endl;
                  cout << angle << endl;
                  secant (radians, velocity, kr, uc, q, b, x0, x1, root, iteration, angle);

         }

}
  writetable(kr, uc, q, b);

 system("pause");
}

// Definition of function "secant"
// Receives a, b, c, d and x0 values from main program
// Returns root and the iterations required
void secant(double radians, double velocity, double kr, double uc, double q, double b, double x0, double x1, double angle, double& root, int& iteration)
{
    double xnminus1, xnplus1, xn; // Local variables
    iteration=0;                  // Initialize iterations
    xnminus1=x0;
    xn=x1;
    do
    {
       ++iteration;
       xnplus1 = xn - fx(radians, velocity, kr, uc, q, b, xn)*(xn-xnminus1)/
                                  (fx(radians, velocity, kr, uc, q, b, xn)-fx(radians, velocity, kr, uc, q, b, xnminus1));
       cout<<"x"<<iteration+1<<" = "<<xnplus1<<endl;
       xnminus1 = xn;
       xn=xnplus1;
    }  
    while ((fabs(fx(radians, velocity, kr, uc, q, b, xnplus1)) >= tol )&& (iteration < max_iter));
    root=xnplus1;  

    cout<<"\nThe root is = "<<root<<endl;
    cout<<"The number of iterations was = "<<iteration<<endl;
    cout<<"The value of f(x) at the root = "<<fx(radians, velocity, kr, uc, q, b, root)<<endl<<endl;

    if(root <1000) cout << "safe"<<endl<<endl; else cout <<"unsafe"<<endl<<endl;
    writedata(angle, velocity, root);
}
// Defines "fx" 
double fx(double radians,double velocity, double kr, double uc, double q, double b, double ts)
{
     return kr * pow(ts,4.0) + uc * ts - q - pow((velocity / b), 2.0) * sin(radians);


}
void writetable(double kr, double uc, double q, double b)
{
     cout <<endl << "Input Parameters:" <<endl;
     cout<< "Kr(1/K^2)=" << kr << endl << "uc(1/K)=" << uc <<endl << "q(unitless)=" << q << endl << "b(mph)=" << b<< endl; //not done this part yet
     cout << "  angle..............velocity...........surface temp..............safe..........";
     cout << "  degs...............mph................Kelvin.....................?............";
     cout << "--------------------------------------------------------------------------------";      

 }
 void writedata (double angle, double velocity, double root)
 {
  }

函数割线的声明

与实际实施的签名不同:

void secant(double radians, double velocity, double kr, double uc, double q, double b, double x0, double x1, double angle, double& root, int& iteration)
{
    ... 
}

链接器正在尝试使用声明的参数列表查找实现,但未找到它。

函数割线的声明

与实际实施的签名不同:

void secant(double radians, double velocity, double kr, double uc, double q, double b, double x0, double x1, double angle, double& root, int& iteration)
{
    ... 
}
链接器正在尝试使用声明的参数列表查找实现,但未找到它。

您提供的割线实现包含错误的参数9 double、一个double引用和一个int引用,而不是8 double,双重引用和整数引用。

您提供的割线实现包含错误的参数9双重引用、双重引用和整数引用,而不是8双重引用、双重引用和整数引用。

您将割线声明为:

void secant(double, double, double, double, double, double, double, double, double&, int&, double);
但你把它定义为:

void secant(double , double , double , double , double , double , double , double , double , double& , int& )
你宣布割线为:

void secant(double, double, double, double, double, double, double, double, double&, int&, double);
但你把它定义为:

void secant(double , double , double , double , double , double , double , double , double , double& , int& )

割线的定义和声明似乎不同。。。
在声明中,最后一个参数是通过copy double传递的,在其定义中是通过引用int&。请看一下割线的定义和声明似乎有所不同。。。
在声明中,最后一个参数是通过copy double传递的,在其定义中是通过引用int&。请看一看

提供完整的错误信息。这就是为什么我们没有长得离谱且难以阅读的函数参数列表。提供完整的错误信息。这就是为什么我们没有长得离谱且难以阅读的函数参数列表。