Объявление функции класса Mex C ++

0

Я должен написать код c++, который берет несколько матриц из MatLab, анализирует эти матрицы и выводит одну матрицу. Код для анализа уже написан, и все матрицы и переменные объявлены в классе, назовем его классом MMclass

class MMclass {

  public:   

    // Start point of the application
    int inici(void);        

    #ifdef _WIN32
        ...
    #elif linux
        ...
    #endif

  private:          

    // Variables -------------------------------------------

    // Private methods -------------------------------------------
    ...
    void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]);
    ...
};

Большая часть кода уже написана, и я просто mexFunction to increase the efficiency добавить mexFunction to increase the efficiency. Из-за этого я хочу иметь возможность использовать

void MMclass::mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
    ...
}

для доступа и изменения переменных, объявленных в исходном классе, который также используется остальной частью кода. Я не могу понять, как объявить mexFunction в MMclass, чтобы он работал. MexFuntion находится в read.cpp, и я использую mex read.cpp для компиляции. Я попытался вместо этого использовать структуру и передать эту структуру, но довольно утомительно изменить весь написанный код.

  • 1
    Непонятно, как вы планируете использовать библиотеку и создавать экземпляр класса, но MATLAB ищет единственную точку входа: глобальную функцию пространства имен mexFunction экспортированную из библиотеки. MMclass что в MMclass есть метод с именем mexFunction , не делает его доступным. Вам нужна постоянная память? Какую проблему ты пытаешься решить?
  • 0
    Существует ранее объявленный класс, называемый MMclass, и этот класс и его переменные используются в остальной части кода. Я хочу, чтобы точка входа mexFunction принимала значения из MatLab и соответственно изменяла значения этих переменных в MMclass. Мне удалось извлечь каждую матрицу индивидуально и иметь точный формат. Все, что мне нужно, - это иметь возможность скопировать эти переменные из mexFunction в класс, чтобы остальная часть программы могла использовать эти переменные.
Показать ещё 2 комментария
Теги:
mex

1 ответ

0
class MMclass {

  public:   

    // Start point of the application
    int inici(void);        

    #ifdef _WIN32
        ...
    #elif linux
        ...
    #endif

  private:          

    // Variables -------------------------------------------

    // Private methods -------------------------------------------
     ...

    ...
};

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
  MMclass YourClassInstance;

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню