4

いくつかのデータ構造が定義されたCで記述されたコードと、それらの構造を処理するためのいくつかの関数があり、それらはすべてsrc1というディレクトリにあるとします。ここで、このコードを配布したいとします。

プロジェクトでsrc1の外部コードを使用したい場合はどうすればよいですか?src1のコードを.aアーカイブにコンパイルしてから、そのアーカイブを使用したい他のプロジェクトに含める必要がありますか?

基本的に私が知る必要があるのは、プロジェクトで外部コードを使用するための正しい規則です。

前もって感謝します。

4

3 に答える 3

5

必要なライブラリの形式でコードを配布するには、次の手順に従います。

  1. 他のプロジェクトに公開したい構造、関数、マクロなどのセットをリストします。
  2. Point-1 にリストされた一連のデータを一連のヘッダー ファイルにグループ化します。内部の残りの部分は、他のヘッダー ファイルに入れることができます。
  3. コードを静的(Linux ベースのシステムの場合は .a、Windows の場合は .lib) または動的ライブラリ (Linux ベースのシステムの場合は .so/.sl、Windows の場合は .dll) にコンパイルします。
  4. ライブラリと公開ヘッダー ファイルのセット (上記のポイント 2 で決定) を他のプロジェクトに提供します。

gcc を使用して静的ライブラリまたは共有ライブラリを作成するためのリンクはこちら

MSVC を使用して Windows で静的または動的ライブラリを作成するためのリンクはこちら

于 2012-05-14T09:59:54.783 に答える
1

ライブラリの配布には任意の形式 (.a または .so) を使用できます。1 つ目は静的に Inked で、2 つ目は動的にリンクされています。詳細については、この回答を参照してください。静的ライブラリと共有ライブラリの違いは?

どちらを使用しても、常に同じ方法でリンクします。

gcc -L/path/to/lib -lsrc1 source.c -o source.o

ここに/path/to/libは、以前にコンパイルしたlibsrc1.so、またはlibsrc1.a

于 2012-05-14T09:55:13.803 に答える
1

はい、スタティック ライブラリを使用できます。これは、Linux では .a ファイルであり、通常は Windows では .lib です。もちろん、これにはヘッダーも共有する必要があるため、ライブラリを使用するコードは適切なデータ構造定義を持つことができます。

于 2012-05-14T09:53:06.750 に答える