提示如下:
Linking...
GETEPHEMERISDlg.obj : error LNK2001: unresolved external symbol "public: double __thiscall CGETEPHEMERISDlg::getdouble(unsigned char *,int,int,int)" (?getdouble@CGETEPHEMERISDlg@@QAENPAEHHH@Z)
Debug/GETEPHEMERIS.exe : fatal error LNK1120: 1 unresolved externals函数是:
double getdouble(unsigned char* data,int n,int l,int scalefactor)   //n为要读的长度,单位为byte;l为初始位置,单位为byte。本函数适用于l,n都为整数
{
unsigned char* shortdata;
double result=0;
int i=0;
shortdata=new unsigned char [n]; for(i=0;i<n;i++)
{
*(shortdata+i)=*(char*)(data+(l+n-i-1));
} result=(double)(*shortdata)*pow(2,scalefactor);
return result;
}
功能是把data中从lbyte开始,截出长度为n的byte数组存入shortdata中,并转为double类型返回。
如果不调用该函数编译通过,如果调用该函数:test=getdouble(TempLLH1,4,46,-19);则出现上述错误提示。请问代码是否出错了?
谢谢~~

解决方案 »

  1.   

    double getdouble(unsigned char* data,int n,int l,int scalefactor)  //n为要读的长度,单位为byte;l为初始位置,单位为byte。本函数适用于l,n都为整数 

    unsigned char* shortdata; 
    double result=0; 
    int i=0; 
    shortdata=new unsigned char [n]; for(i=0;i <n;i++) 

    *(shortdata+i)=*(char*)(data+(l+n-i-1)); 
    } result=(double)(*shortdata)*pow(2,scalefactor); 
    return result; 

    放在声明中了?getdouble被定义成 成员函数了吧
      

  2.   

    我在头文件中声明:double getdouble(unsigned char* data,int n,int l,int scalefactor);
    上面那个是在.cpp文件中的
      

  3.   

    头文件中声明:double getdouble(unsigned char* data,int n,int l,int scalefactor);
    放在什么地方??? 
    在  class CGETEPHEMERISDlg 里面还是外面???如果你在头文件是这么做的话:class CGETEPHEMERISDlg :public CDialog
    {
       。。
       double getdouble(unsigned char* data,int n,int l,int scalefactor); 
       。。
    };相应的,你在CPP文件中定义这个函数的时候,就要这么写 double CGETEPHEMERISDlg::getdouble(unsigned char* data,int n,int l,int scalefactor)
    {
       。。
    }
    你的问题应该就在这里