簡単な質問ですが、このフォーラムにいる人なら簡単に答えられると思います。
c ++で、dllであると信じている静的ライブラリを作成するにはどうすればよいですか(ただし、おそらく間違っています:S)。C++ を使い始めたばかりですが、作成するすべての新しいプログラムに関数を移動することにかなり悩まされています。毎回参照できるライブラリを作成するにはどうすればよいでしょうか?
助けてくれてありがとう、本当に感謝しています。
簡単な質問ですが、このフォーラムにいる人なら簡単に答えられると思います。
c ++で、dllであると信じている静的ライブラリを作成するにはどうすればよいですか(ただし、おそらく間違っています:S)。C++ を使い始めたばかりですが、作成するすべての新しいプログラムに関数を移動することにかなり悩まされています。毎回参照できるライブラリを作成するにはどうすればよいでしょうか?
助けてくれてありがとう、本当に感謝しています。
あなたが望むのは、 -c フラグを使用することだと思います。これが行うことは、基本的に、メイン関数を必要とせずにオブジェクト ファイルをコンパイルできるようにすることです。その後、このオブジェクト ファイルを任意のプログラムで使用できます。ヘッダー ファイルをインクルードするだけで、新しいオブジェクトをコンパイルできます。次に、この .o ファイルにリンクします。これを .a ファイルに変換することも検討できますが、これは不要な手順です。.a ファイルと .o ファイルの唯一の実際の違いは、データの格納方法と、それらを利用するコンパイル コマンドです。これは、.o ファイルを利用するための典型的な一連のコマンドです。
STEP1: 最初に -c フラグを付けて .o ファイルをビルドします。
COMMAND1: g++ -c someLib.cpp -o someLib.o
STEP2: ライブラリのオブジェクトと、「ライブラリ」を使用したい cpp ファイルを同じプログラムに結合します。
COMMAND2: g++ someMainFile.cpp someLib.o -o someMainProgram
このプロセスに対する動的リンクの利点は、シンボルの重複がないことです。上記の場合、someLib.o に存在するシンボルは、someMainProgram にも存在することになります (例: コンパイルしてシステムから someLib.o をすべて削除しても、プログラムは実行されます!)。それらが DLL 内にある場合、someMainProgram は someMainFile.cpp 内のシンボルのみを持ち、実行時に someLib 内のシンボルを利用可能な dll の中から見つけようとします。