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 です。では、何が問題なのでしょうか?