我如何将值从一个cpp文件中的void函数传递到另一个cpp文件中的另一个void函数?

问题描述 投票:1回答:1

我对编程非常陌生,但是我必须为我的项目这样做。

在Visual C ++ 6.0中,我试图将一个函数的计算值发送到另一个cpp文件中的另一个函数。但是,当我尝试编译时,出现以下错误:

创建库Debug / usradd.lib和对象Debug / usradd.expaddrxn.obj:错误LNK2001:未解析的外部符号“浮点* Gamma”(?Gamma @@ 3PAMA).. \ debug \ usradd.dll:致命错误LNK1120:1未解决的外部因素

如何解决此问题?谢谢。

这是我尝试过的简单代码。我喜欢将Gamma矩阵从addk.cpp传递到addrxn.cpp,如下所示。谢谢。

//callccx.h
//declare "Gamma" array
extern Gamma[23];

//addk.cpp
void addk(float *y, float *x, double t, double p, float *xkv)
{
float Gamma[1] = 2000*t;
.
.
.
float Gamma[23] = 2300*t;

for(int i=0;int<23;i++)
{
xkv[i] = 200*t/p*Gamma[i];
}
return;
}

//addrxn.cpp

int addrxn0(const int nUopID, const int nRxnID, const int nComponents, 
    const double fTemperature,  const double fPressure, const double fRPM, 
    const double fBetaFac, const double fFreqFac, const double fExpActE, 
    const double *C, const double *Pi, const double *fStoich, 
    const double *fExponent, const double *fAdsFac, const double *fAdsE, 
    const double *fAdsExp, double *pRateForm)
{
    //Arhenius
    double rate=fExpActE*fFreqFac*Gamma[1]/Gamma[2];
    int iComp;
    for(iComp=0;iComp<nComponents;iComp++)
    {
        if(fStoich[iComp] < 0)
        {   //This is a reactant.
            if(fExponent[iComp] == 0.0)
                rate*=pow(C[iComp], -fStoich[iComp]);   //Use stoich as exponent
            else
                rate*=pow(C[iComp], fExponent[iComp]);  //Use exponent as given
        }
    }

    //Final rate of formation
    (*pRateForm)=rate*
    return 0;
}
c++ c visual-c++ void extern
1个回答
0
投票

extern声明需要一种类型:

extern float Gamma[23];

您的示例代码:

float Gamma[1] = 2000*t;

没有道理。您要在此处声明一个浮点数组ONE元素吗?您可能的意思是:

Gamma[1] = 2000 * t;

无论如何,您的链接错误告诉您Gamma需要在某个位置(可能在另一个文件中)进行定义。像

之类的东西
float Gamma[23];
© www.soinside.com 2019 - 2024. All rights reserved.