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);

Не уверен, что правильно публикую проблему, поэтому еще сделаю в виде фото Проблема


Ответы (0 шт):