このコードは、ヘッダーファイルとソースファイルにあります。これがコードの小さな断片です。これは.cpp
ファイルからです。
int sample(Cdf* cdf)
{
//double RandomUniform();
double r = RandomUniform(); //code that is causing the error
for (int j = 0; j < cdf->n; j++)
if (r < cdf->vals[j])
return cdf->ids[j];
// return 0;
}
これは.c
ファイルからのものです:
double RandomUniform(void)
{
double uni;
/* Make sure the initialisation routine has been called */
if (!test)
RandomInitialise(1802,9373);
uni = u[i97-1] - u[j97-1];
if (uni <= 0.0)
uni++;
u[i97-1] = uni;
i97--;
// ...
}
そしてこれは私のヘッダーファイルからです
void RandomInitialise(int,int);
double RandomUniform();
double RandomGaussian(double,double);
int RandomInt(int,int);
double RandomDouble(double,double);
私はファイルで使用#include "headerfile.h"
し、.cpp
次にコードをコンパイルしました。スニペットからわかるように、私は基本的にファイルにある関数RandomUniform()
を呼び出して.cpp
から、ヘッダーファイルでそれを定義しています。
問題は、プログラムをビルドするたびに、「関数への未定義の参照」エラーが発生することです。これが私が得ているエラーです
In function 'Z6sampleP3Cdf':
undefined reference to 'RandomUniform()'
誰かが何か考えがありますか?