0

C++ API を呼び出す C ハーネスを作成しています。次のコードがあります。

Boxa *tess_get_text_lines(tess_api_t *api, const bool raw_image, 
                          const int raw_padding, Pixa** pixa, int **blockids, 
                          int **paraids)
{
    return api->tess_api->GetTextlines(raw_image, raw_padding, pixa, blockids, 
                                       paraids);
}

次の G++ エラーが発生します。

$ ./build_so.sh 
tesseract.cpp: In function ‘Boxa* tess_get_text_lines(tess_api_t*, bool, int, Pixa**, int**, int**)’:
tesseract.cpp:172:47: error: no matching function for call to ‘tesseract::TessBaseAPI::GetTextlines(const bool&, const int&, Pixa**&, int**&, int**&)’
tesseract.cpp:172:47: note: candidate is:
In file included from tesseract.cpp:3:0:
/usr/include/tesseract/baseapi.h:376:9: note: Boxa* tesseract::TessBaseAPI::GetTextlines(Pixa**, int**)
/usr/include/tesseract/baseapi.h:376:9: note:   candidate expects 2 arguments, 5 provided

私の呼び出しが正しいオーバーロードに一致していません。参考までに、呼び出されるメソッドで使用できるオーバーロードを次に示します。

Boxa* GetTextlines(const bool raw_image, const int raw_padding,
                   Pixa** pixa, int** blockids, int** paraids);
Boxa* GetTextlines(Pixa** pixa, int** blockids);

私の呼び出しが "GetTextlines(const bool&, const int&, Pixa* &, int *&, int**&)" に変換されるのはなぜですか?

ありがとう。

4

2 に答える 2

0

実際、Tesseract は 18 年間使用されてきましたが、私が使用してきたトランク バージョンは、予想に反して、以前に公開された最新のダウンロード可能なバージョン (3.02.02) 以来、多くの追加のオーバーロードが与えられていることが判明しました。ことし。

したがって、報告された問題への答えは、@templatetypedef が示したように、GCC がエラー メッセージのために変数をアンパサンドで装飾しているだけである可能性が高いということです。私が抱えていた効果的な問題への答えは、単純に、API ヘッダーの同期コピーを見ていないということです。

于 2013-11-09T20:40:42.073 に答える