Я написал заявление на C++ и в нем, мне нужно вызвать математическую функцию, которая была написана на C. Прототип выглядит следующим образом:C в C++ код
void Jacobi_Cyclic_Method(double *eigenvalues, double *eigenvectors, double *A, int n);
Моя проблема заключается в том, что я не могу кажется, передать функцию двойной * (например, как собственные векторы и а являются многомерными массивами. C++ способ передать эти вещи, кажется,
double [][size]
Я прочитал о экстерне C, но я не думаю, что это применяется здесь, так как я не взаимодействую с объектом, но с самим источником. Как я могу отправить эту функцию C my multi мерные массивы, определенные в качестве такового:
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. – Kiril
. Вы должны просто передать эти значения напрямую. 'Double [100]' является 'double *', а также 'double [100] [100]'. Что не так, когда вы пытаетесь? –