0

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

4

1 に答える 1

1

MATLAB Compiler によって生成された .c/.cpp ファイルをプロジェクトに含めないでください。ヘッダー ファイルと .lib ファイルのみが必要です。

于 2016-02-12T06:15:35.297 に答える