【发布时间】:2012-04-25 03:32:57
【问题描述】:
我编写了一个 C++ 应用程序,我需要在其中调用一个用 C 语言编写的数学函数。原型如下所示:
void Jacobi_Cyclic_Method(double *eigenvalues, double *eigenvectors, double *A, int n);
我的问题是我似乎无法传递函数 double *(例如,特征向量和 A 都是多维数组。传递这些东西的 C++ 方式似乎是
double [][size]
我已经阅读了有关 extern C 的信息,但我认为它不适用于这里,因为我不是与对象交互而是与源本身交互。如何发送该 C 函数我的多维数组定义如下:
double [100][100] A;
double [100][100] eigenvectors;
double [100] eigenvalues;
尝试编译我得到:
error: no matching function for call to ‘MathEngine::Jacobi_Cyclic_Method(double
[100], double [100][100], double [100][100], int)’
mathEngine.h:9: note: candidates are: static void
MathEngine::Jacobi_Cyclic_Method(double*, double*, double*, int)
【问题讨论】:
-
您是重新编译所有内容,包括您的数学函数的实现,还是链接到现有的编译库?这对于
extern "C"是否重要很重要 -
与在 C 中定义数组的方式相同。
-
您应该能够直接传递这些值。
double[100]是double *,double[100][100]也是。尝试时出了什么问题? -
您的 C 原型需要用于特征值、特征向量和 A 的一维数组。我错过了什么吗?
-
我正在从它的源代码重新编译。当我尝试编译时,我用我尝试编译时得到的内容编辑了我的帖子