0

奇妙な問題があります。 

私は、Cを使用して記述された共有ライブラリとC++で記述されたGUIアプリケーションに取り組んでいます。GUIアプリケーションは共有ライブラリを使用します。この共有ライブラリはSQLiteの融合を使用し、静的にリンクします。GUIは、いくつかの構成目的でSQLiteも使用します。また、静的にリンクされています。どちらも最新のSQLiteバージョンを使用しています。 

私の共有ライブラリはを使用していますFTS4。共有ライブラリのコンパイル中にコンパイル時オプションを提供することにより、FTS4を有効にしました。すべてが共有ライブラリでうまく機能します。共有ライブラリコードベースのすべてのテストに合格しています。

GUIプログラムでこれを使い始めると問題が発生します。のようなエラーが発生しますUnknown module FTS4。これは、共有ライブラリに静的にリンクされており、このGUIプログラムが行うのは、ライブラリに動的にリンクすることだけであるため、奇妙です。FTSコンパイルオプションをGUIプログラムに設定すると、エラーがなくなり、すべて正常に機能します。

要するに、

libfoo.so-SQLiteをFTS4オプションをオンにして foo静的にリンクします-SQLIteを特別なコンパイル時オプションなしで静的にリンクします。に動的にリンクしlibfooます。

なぜこれが起こっているのかわかりません。どんな助けでも素晴らしいでしょう!

4

1 に答える 1