1つのC静的ライブラリに結合したい2つの情報源があります。Cで静的ライブラリを構築する
renderay_core.c
renderay_shapes.c
とそれに対応するヘッダーファイル。私はこれを最初にエラーを避けるためにスタンドアロン(非ライブラリ)としてコンパイルしました。
test.cのは
#include <stdio.h>
#include "renderay_core.c"
#include "renderay_shapes.c"
int main(void){
Canvas* canvas = new_Canvas(5,5);
printf("Test");
}
でそれをコンパイル:
gcc test.c renderay_core.c renderay_shapes.c -o main.exe
、それがうまく働きました。
今私はこれを静的なlibにパックしています。それ以降の作業:
gcc -c renderay_core.c renderay_shapes.c
ここでは、オブジェクトをライブラリとしてリンクする準備が整いました。
ar rcs librenderay.a renderay_core.c renderay_shapes.c
これは私が使用するコマンドです。次に、プレーンなソースファイルの代わりにライブラリを使ってtest.cをコンパイルしようとします。
「new_Canvas」ライブラリへのリンクが失敗したことを私に言って
への未定義参照:私はこれをコンパイルしようとすると
gcc test.c -o main.exe -static -L -lrenderay
は、今私は、エラー警告が表示されます。私はここで間違って何をしていますか?私は何を逃したのですか?
ヘッダーファイルについて学びます。実装ファイルを含めないでください。 – Olaf
オブジェクトファイルではなくCソースファイルに対して 'ar'を実行しているようです。 –