0

ここの指示に従って Qt 静的ライブラリを作成しました: http://qt-project.org/wiki/How_to_create_a_library_with_Qt_and_use_it_in_an_application

次に、ライブラリを自分の (Qt 以外の) アプリケーションにリンクしようとしましたが、GCC は未定義の参照について不平を言いました。Linux ユーティリティを使用してライブラリの内容を調べるnmと、呼び出そうとする関数の前後に不可解な文字が追加されていることがわかりました。

命令リンクからの命令をより詳しく読むと、関数をインポートするために正しい Qt マクロを呼び出すことができるように、インポート定義を使用する必要があることが示唆されます (ライブラリの命名スキームに一致するように関数の名前を変更すると仮定します)。しかし、メイン アプリケーションに Qt の依存関係を導入したくはありません。

私が本当にやりたいことは、Qt を使用して UI フロントエンド ライブラリを構築することです。私のメイン アプリケーションは、Qt に依存することなく、単にリンクするだけです。これは可能ですか?または、意図しない方法で Qt を使用していますか?

ありがとう。

4

1 に答える 1

0

C++ 名前空間のマングリングに遭遇しているようです。ライブラリ エクスポートの前後に「extern "C" {}」ブロックを追加してみてください。

QLibrary::resolve 関数の主なポイントは、シンボルを解決するための win32 コマンドまたは linux コマンドについて心配する必要がないように、抽象化レイヤーを提供することです。Qt で作成されたライブラリを使用する必要はありません。

于 2013-03-04T04:10:08.490 に答える