我是编程新手,但我必须为我的项目做这件事。
在 Visual C++ 6.0 中,我试图将计算值从一个函数发送到另一个 cpp 文件中的另一个函数。 但是,当我尝试编译时出现以下错误:
Creating library Debug/usradd.lib and object Debug/usradd.exp addrxn.obj : error LNK2001: unresolved external symbol "float * Gamma" (?Gamma@@3PAMA) ..\debug\usradd.dll : fatal error LNK1120: 1 unresolved externals
我该如何解决这个问题?谢谢。
这是我尝试过的简单代码版本。 我喜欢将 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;
}
最佳答案
extern
声明需要一个类型:
extern float Gamma[23];
您的示例代码:
float Gamma[1] = 2000*t;
没有意义。您是否在这里声明一个包含一个元素的 float 组?你的意思可能是:
Gamma[1] = 2000 * t;
无论如何,您的链接错误告诉您 Gamma
需要在某处定义,可能在另一个文件中。有点像
float Gamma[23];
关于c++ - 如何将一个 cpp 文件中的 void 函数的值传递给另一个 cpp 文件中的另一个 void 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59049385/