現時点では、Qt で記述されたアプリケーションと (静的) ライブラリがあります。ビルドシステムはcmakeを使っています。ライブラリを実行可能ファイルにリンクするtarget_link_libraries
と、すべて正常に動作します(そして、1つのファイル/実行可能ファイルがあります)。
しかし、今は共有ライブラリを使いたいと思っています。add_library
and キーワードを使用して共有ライブラリを作成するとSHARED
機能しますが、共有ライブラリをロードする方法について少し混乱しています。私は2つの「方法」を見ました:
- ライブラリを作成し、
Q_DECL_EXPORT
/を使用しますQ_DECL_IMPORT
。ライブラリをロードしQLibrary
、型キャストを使用してすべての (C) 関数を解決します。 - ライブラリを作成し、ヘッダー ファイルをアプリケーションにインクルードします。共有ライブラリは、 cmake コマンドで実行可能ファイルに「渡されます」
target_link_libraries
。ライブラリをロードするために QLibrary を使用しません。
今、私はいくつかの質問があります:
- 共有ライブラリをロードする一般的な (「通常の」) 方法は何ですか? __cdecl を使用してすべての C++ メソッドを C 関数にエクスポートするか (方法 1)、ヘッダー ファイルを含めますか (方法 2)? 他の解決策?
- 方法 2 (インクルード ヘッダー) に関連 - ライブラリはどのようにロードされますか? オペレーティング システムによって ? ライブラリを移動すると、アプリケーションはライブラリを見つけることができません -> 実行時にライブラリがロードされますか?
- ヘッダーを含めずにライブラリをロードする方法や、コンパイル時に使用する方法はありますか (実行時にライブラリをロードする)。方法があると読みましたが、それほど簡単ではありません
私の質問が明確で「初心者」ではないことを願っています。それ以外の場合はコメントを書いてください