0

現時点では、Qt で記述されたアプリケーションと (静的) ライブラリがあります。ビルドシステムはcmakeを使っています。ライブラリを実行可能ファイルにリンクするtarget_link_librariesと、すべて正常に動作します(そして、1つのファイル/実行可能ファイルがあります)。

しかし、今は共有ライブラリを使いたいと思っています。add_libraryand キーワードを使用して共有ライブラリを作成するとSHARED機能しますが、共有ライブラリをロードする方法について少し混乱しています。私は2つの「方法」を見ました:

  1. ライブラリを作成し、Q_DECL_EXPORT/を使用しますQ_DECL_IMPORT。ライブラリをロードしQLibrary、型キャストを使用してすべての (C) 関数を解決します。
  2. ライブラリを作成し、ヘッダー ファイルをアプリケーションにインクルードします。共有ライブラリは、 cmake コマンドで実行可能ファイルに「渡されます」target_link_libraries。ライブラリをロードするために QLibrary を使用しません。

今、私はいくつかの質問があります:

  1. 共有ライブラリをロードする一般的な (「通常の」) 方法は何ですか? __cdecl を使用してすべての C++ メソッドを C 関数にエクスポートするか (方法 1)、ヘッダー ファイルを含めますか (方法 2)? 他の解決策?
  2. 方法 2 (インクルード ヘッダー) に関連 - ライブラリはどのようにロードされますか? オペレーティング システムによって ? ライブラリを移動すると、アプリケーションはライブラリを見つけることができません -> 実行時にライブラリがロードされますか?
  3. ヘッダーを含めずにライブラリをロードする方法や、コンパイル時に使用する方法はありますか (実行時にライブラリをロードする)。方法があると読みましたが、それほど簡単ではありません

私の質問が明確で「初心者」ではないことを願っています。それ以外の場合はコメントを書いてください

4

1 に答える 1