我尝试使用演示代码来检测和匹配 David Lowe (lowe@cs.ubc.ca) 的 SIFT 特征
在我的代码中。所以我在 Matlab 中编译 (.m) 文件以生成 DLL。Matlab中的命令代码如下:
mcc -B csharedlib:SiftMatch match.m sift.m -v
但是,当我在我的 C++ 代码(VS2010 下)中使用 DLL 时,出现了一个问题:
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。那么,有什么问题呢?