2017-02-03 17 views
0

私はMinGWを使用して静的ライブラリを構築しようとしています。静的ライブラリの未定義関数

ライブラリを使用しようとするまで、すべてうまくいっていて、add_numbersが未定義の関数であるというエラーがありました。

多くの人がこの問題を抱えており、ソースファイルが含まれた後にライブラリをリンクして移動することでソートしましたが、バッチファイルを書いていたので、あまり役に立ちませんでした。

ここに私の情報源があります。

mylib.h

#ifndef MYLIB_H 
#define MYLIB_H 
int add_numbers(int a, int b, int c); 
#endif 

mylib.c の#include "mylib.h" int型add_numbers {戻りA + B + C(int型B、int型のC INT)。 }

私は、次のコマンドを使用して、私は.aファイルを構築しています

gccの--std = C89 -c mylib.c -o mylib.o

AR RCS libmylib.aをmylib.o

私はまた、規格を指定せずに試しました。 このコマンドの実行中にエラーまたは警告はありません。

次に、私のテストプログラムは次のようになります。

#include <stdio.h> 
#include "mylib.h" 
int main() 
{ 
printf("The sum of 1, 2, and 3 is %d", add_numbers(1, 2, 3)); 
getchar(); 
return 0; 
} 

最後に、このコマンドでテストを作成します。 gccのmylibtest.c -L -lmylib -o TEST.EXE

私は多くの多くの異なる配列中に、これらのコマンドの周りに移動しようとしたが、常に次のエラーを受信しました:

C:\ユーザーはアーロンを\ \ AppData \ローカル\一時\のcc0ERpBi.o:。mylibtest.c :(テキスト+ 0x26):add_numbers' collect2.exe `への未定義 参照:エラー:ldは

1つの終了ステータスを返したE:\ my_first_static_library>

ご協力いただければ幸いです。静的ライブラリを書く芸術、良い10のstackoverflowの質問。

+0

yugrは、あなたの答えを持っています。 リンカーは、 '-L'の引数が' -lmylib'であると判断した場合、 です。つまり、 '-lmylib'はリンカーを望むディレクトリの名前です ライブラリを検索しているため、実際にはライブラリをリンクしていない が見つかりません。したがって、あなたのライブラリ関数への参照は未定義の です。 –

答えて

1

あなたは-L後にドットが欠落しています

gcc mylibtest.c -L . -lmylib -o test.exe 
関連する問題