MX Создать двойную матричную ошибку при интеграции Matlab с VC ++ - PullRequest
2 голосов
/ 28 июня 2011

Когда я создаю проект для передачи пути изображения в мой проект Matlab, и я создал инициализацию:

#include "feautresPoints.h"


int main(int argc, char* argv[])
{
    mxArray* result;
    mxArray* x;
    double myArray[5]={10.2, 3, 6.3, 5.4, 5.9};

    x=mxCreateDoubleMatrix(1, 5, mxREAL);
    memcpy(mxGetPr(x), myArray, 5 * sizeof(double));

    feautresPointsInitialize();

    feautresPointsTerminate();


    return 0;
}

это дает мне 3 ошибки

Ошибка 1

ошибка LNK2019: неразрешенный внешний символ _mxGetPr_proxy, указанный в функции _main

Ошибка 2

ошибка LNK2019: неразрешенный внешний символ _mxCreateDoubleMatrix_730_proxy, указанный в функции _main

Ошибка 3

ошибка LNK1120: 2 нерешенные внешние проблемы

так как я могу решить эти ошибки ??

Я включаю библиотеку проекта Matlab, созданную во время компиляции в проекте C ++, и libmx.lib, а также добавляю файл включения для Matlab, а также добавляю библиотеку Matlab для дополнительных каталогов библиотеки

1 Ответ

0 голосов
/ 30 августа 2011

Вы должны включить библиотеки MATLAB для своего компоновщика. В моем случае: "C: \ Program Files \ MATLAB \ MATLAB Runtime Compiler Runtime \ v714 \ extern \ lib \ win32 \ microsoft *"

Кроме того, вы неправильно инициализируете среду MATLAB, см. «Инициализация и завершение работы вашего приложения с помощью mclInitializeApplication и mclTerminateApplication» в справке MATLAB.

mxArray* result;
mxArray* x;

mclInitializeApplication(NULL,0);
feautresPointsInitialize();

/* Your c++ code here */

feautresPointsTerminate();
mclTerminateApplication();

return 0;

Примечание feautresPointsInitialize() вернет bool, указывающее, что все инициализировано, вы должны проверить это.

...