Visual Studio 2010 — вызов Matlab DLL из C ++: не удалось инициализировать библиотеку

Я пытаюсь использовать демонстрационный код для обнаружения и сопоставления функций SIFT Дэвида Лоу ([email protected])

в моем коде. Поэтому я скомпилировал (.m) файл в Matlab для генерации DLL. Вот код команды в Matlab:

           mcc -B csharedlib:SiftMatch match.m sift.m -v

Однако, когда я использую DLL в своем коде C ++ (под VS2010), возникает проблема:

              SiftMatchInitialize();
This function returned false. I could not initialize the library.

и отладка показала, что:

    bool MW_CALL_CONV SiftMatchInitializeWithHandlers(
mclOutputHandlerFcn error_handler,
mclOutputHandlerFcn print_handler)
{
int bResult = 0;
if (_mcr_inst != NULL)
return true;
if (!mclmcrInitialize())
return false;
if (!GetModuleFileName(GetModuleHandle("SiftMatch"), path_to_dll, _MAX_PATH))
return false;
{
mclCtfStream ctfStream =
mclGetEmbeddedCtfStream(path_to_dll);
if (ctfStream) {
bResult = mclInitializeComponentInstanceEmbedded(   &_mcr_inst,
error_handler,
print_handler,
ctfStream);
mclDestroyStream(ctfStream);
} else {
bResult = 0;
}
}
if (!bResult)
return false;
return true;
}

В этой функции ctfStream имеет значение NULL, а bResult равно 0.
Так в чем проблема?

0

Решение

Не включайте файлы .c / .cpp, сгенерированные компилятором MATLAB, в ваш проект. Необходим только заголовочный файл и файл .lib.

1

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

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

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