【发布时间】:2020-03-21 18:44:31
【问题描述】:
我对编程很陌生,但我必须为我的项目这样做。
在 Visual C++ 6.0 中,我试图将计算值从一个函数发送到另一个 cpp 文件中的另一个函数。 但是,当我尝试编译时,出现以下错误:
创建库 Debug/usradd.lib 和对象 Debug/usradd.exp addrxn.obj:错误 LNK2001:未解析的外部符号“float * 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