C++とLeptonicaをリンクする際に奇妙な問題があります。通常の関数呼び出しはうまくいきますが、私はもともと.soライブラリに公開されていなかったライブラリの関数が必要です。だから私はソースで2つの興味深い関数を検索し、のstaticキーワードを削除したので、露出したものと似ています。私はきれいにした後、完全な図書館を作り直しました。 .soファイルがOKになります。シンボルは.soでコンパイルされていますが、リンクは失敗しますが、リンクは失敗します。
nm liblept.so.5.0.0 ... 000000000009d010 T dewarpGetMeanVerticals 000000000009d160 T dewarpGetTextlineCenters 000000000009d8f0 T dewarpIsLineCoverageValid
は、ファイルをの.oためにコンパイルし、それを観察する:
g++ -c -std=c++11 -I../leptonica/src/src/ preproc.cpp -L../leptonica/src/.libs/ -llept -o preproc nm preproc ... U dewarpGetMeanVerticals U dewarpIsLineCoverageValid
私は何
/tmp/ccCPqS1R.o: In function `_dewarpGetTextlineCenters(Pix*, int)': preproc.cpp:(.text+0x3d5): undefined reference to `dewarpGetMeanVerticals' /tmp/ccCPqS1R.o: In function `_dewarpBuildPageModel(L_Dewarp*, char const*)': preproc.cpp:(.text+0x81d): undefined reference to `dewarpIsLineCoverageValid' collect2: error: ld returned 1 exit status
で-cフラグの結果なしで同じコンパイル中間違っている?
は、事前にありがとう:バラージュ
私はliblept.so.5.0.0にあるものとliblept.soとのリンクを見せていることに気付きました。正しい.soファイルにリンクするようにシンボリックリンクを更新する必要がある可能性はありますか? – cleblanc
'nm'はここでは最適なツールではありません。' readelf --dyn-syms -W'を試してみてください。 – yugr
[定義されていない参照/未解決の外部シンボルのエラーとは何ですか?どうすれば修正できますか?](http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-シンボルエラーとハウツーi-fix) – Olaf