1

背景情報このInstructions
に従って GAUL ライブラリをビルドしようとしています。

問題
私は C で 2 つの静的ライブラリを持っています。これらは Dev-CPP Windows 7 64 ビットでビルドされ、一方が他方を参照しています。

それらをテストするために、それらを参照するコンソール アプリケーションを作成しました。

私がコンパイルしようとしたとき、これは私が得たログです:

> コンパイラ: デフォルトのコンパイラ  
> Makefile のビルド: "C:\Soft\GAUL\Makefile.win"  
> make を実行しています...  
> make.exe -f  
> "C:\Soft\GAUL\Makefile.win" すべて  
> **gcc.exe ../gaul-devel-windows/examples/struggle.o -o "struggle.exe" -L"C:/Dev-Cpp/lib" gaul-util.a gaul-devel.a* *    
>   
> gaul-util.a(memory_util.o)(.text+0x2e):memory_util.c: '_imp__mem_chunk_new_real' への未定義の参照  
> gaul-util.a(memory_util.o)(.text+0x6c):memory_util.c: '_imp__mem_chunk_free_real' への未定義の参照  
> ...  
> gaul-devel.a(ga_core.o)(.text+0x101):ga_core.c: 'slink_free_all' への未定義の参照   
> gaul-devel.a(ga_core.o)(.text+0x360):ga_core.c: 「mem_chunk_new_real」への未定義の参照  
> ...  
> collect2: ld は 1 を返しました  
> 終了ステータス
>
> make.exe: *** [struggle.exe] エラー 1
>
> 実行終了

コマンドで使用されているパラメーターと関係があると思いますgcc


私が試した実際の状況
: - ライブラリを C:\Dev-Cpp\lib にコピーする-
ライブラリ名の前にアドレス全体を使用する
- ライブラリ名の前に -l を使用する-名前の後に
使用しない.a

それらのいずれかで成功した結果はありません。

誰かが私を正しい方向に向けることができますか?

前もって感謝します。

4

2 に答える 2

0

リンカー (ld) の引数の順序は重要です。ビルドが失敗した場合

gcc.exe ../gaul-devel-windows/examples/struggle.o  -o "struggle.exe" -L"C:/Dev-Cpp/lib" gaul-util.a gaul-devel.a

行、最後の 2 つのファイルの順序を逆にしてみてください。

gcc.exe ../gaul-devel-windows/examples/struggle.o  -o "struggle.exe" -L"C:/Dev-Cpp/lib" gaul-devel.a gaul-util.a
于 2012-09-07T21:04:00.063 に答える
0

最後に@ThiefMaster♦が言ったように、この場合VC ++で新しいビルダーを使用しましたが、うまくいきました!

于 2012-09-16T05:10:14.133 に答える