Scilab API C++ Ubuntu
Можете подсказать, как правильно компилировать программу и правильно ли она вообще написана? Я хочу использовать API Scilab, но мало что получается. Мне кажется, что проблема заключается в использование функций Scilab в C++. Возможно, я использую те функции, которых уже нет. Так ли это?
Вот код:
#include <sciprint.h>
#include <api_scilab.h>
int main() {
int error;
// Пример использования API Scilab
double data[] = {1, 2, 3, 4, 5};
int rows = 1, cols = 5;
mxArray *matrix = NULL;
matrix = sci_createMatrixOfDouble(scilab_getCurrentThreadEnv(), rows, cols, data);
if (matrix != NULL) {
error = sciputmatrix("my_matrix", matrix);
if (error != 0) {
sciprint("Cannot put matrix into Scilab\n");
}
} else {
sciprint("Cannot create matrix\n");
}
return 0;
}
Компиляция
g++ -o 1 1.cpp -I/usr/include/scilab/ -lscicall_scilab -lscimalloc -lscicommons -lapi_scilab -lscilab
Ошибка:
1.cpp: In function ‘int main()’:
1.cpp:10:5: error: ‘mxArray’ was not declared in this scope
10 | mxArray *matrix = NULL;
| ^~~~~~~
1.cpp:10:14: error: ‘matrix’ was not declared in this scope
10 | mxArray *matrix = NULL;
| ^~~~~~
1.cpp:11:39: error: ‘scilab_getCurrentThreadEnv’ was not declared in this scope
11 | matrix = sci_createMatrixOfDouble(scilab_getCurrentThreadEnv(), rows, cols, data);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
1.cpp:11:14: error: ‘sci_createMatrixOfDouble’ was not declared in this scope; did you mean ‘createMatrixOfDouble’?
11 | matrix = sci_createMatrixOfDouble(scilab_getCurrentThreadEnv(), rows, cols, data);
| ^~~~~~~~~~~~~~~~~~~~~~~~
| createMatrixOfDouble
1.cpp:13:17: error: ‘sciputmatrix’ was not declared in this scope; did you mean ‘sci_matrix’?
13 | error = sciputmatrix("my_matrix", matrix);
Не уверен, что правильно публикую проблему, поэтому еще сделаю в виде фото