Ошибка связывания Matlab с переполнением стека

Я пытаюсь использовать библиотеку Matlab в программе C ++:

#include <cstdlib>
#include <cstdio>
#include <string.h>
#include "engine.h"
using namespace std;int main(int argc, char** argv) {
Engine* mweng = engOpen("");
engEvalString(mweng, "n = func(5)");
printf ("%d",engGetVariable(mweng, "n"));

engClose(mweng);
return 0;
}

Я компилирую свой проект с g ++ с включенным MATLABROOT\extern\include каталог и имеют следующую ошибку:

build/Debug/Cygwin-Windows/main.o: In function `main':
/cygdrive/d/Projects/Task1/main.cpp:10: undefined reference to `_engOpen'
/cygdrive/d/Projects/Task1/main.cpp:11: undefined reference to `_engEvalString'
/cygdrive/d/Projects/Task1/main.cpp:12: undefined reference to `_engGetVariable'
/cygdrive/d/Projects/Task1/main.cpp:14: undefined reference to `_engClose'
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/Cygwin-Windows/task1.exe] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

Я предполагаю, что у меня есть проблемы со связыванием некоторых библиотек Matlab.

ОБНОВИТЬ:
У меня такая же проблема с VS2012 и компилятором Windows.
каталог extern\include включены в Additional include directories, такой же как extern\lib\win64\microsoft добавлено в компоновщик Additional library dependencies,
Согласно комментарию @jucestain, libeng.lib файл добавлен в Additional dependencies в настройках компоновщика.

ОБНОВЛЕНИЕ 2:
Мы обнаружили проблему совместимости: 32-битный gcc не работает с 64-битным движком Matlab. Итак, я слился /extern папка из 32-битного Matlab с моим /extern папка, измененная библиотека линкера /extern/lib/win32/lccи мой код успешно скомпилирован. Спасибо @aircooled!

1

Решение

Это строка, которую я использую в приглашении cygwin для получения main.exe:

$ g++ main.cpp -o main.exe -I/cygdrive/c/Program\ Files/MATLAB/R2009b/extern/include -L/cygdrive/c/Program\ Files/MATLAB/R2009b/extern/lib/win32/microsoft -llibeng

Обратите внимание, что порядок предоставления источников и библиотек для gcc Важно — сначала источники, чем библиотеки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]