SDL、SDL_ttf、OpenAL、およびGTKを使用する私のプロジェクトをコンパイルしました。次のようなエラーが出力されます。Ubuntu 11.10:GCC/G ++はライブラリをリンクしません
TxtFunc.cpp:(.text+0x61): undefined reference to `TTF_OpenFont'
TxtFunc.cpp:(.text+0x8c): undefined reference to `TTF_RenderText_Solid'
TxtFunc.cpp:(.text+0xf6): undefined reference to `SDL_UpperBlit'
TxtFunc.cpp:(.text+0x108): undefined reference to `TTF_CloseFont'
TxtFunc.cpp:(.text+0x114): undefined reference to `SDL_FreeSurface'
すべてのライブラリ呼び出し。私は、以下のリンクオプションでコンパイルしています:
sdl-config --libs
pkg-config gtk+-2.0 --libs
pkg-config openal --libs
-lalut -lSDL_ttf
私がインストールされ、これらのすべてのパッケージを持って、そして何の「ファイルが見つかりません」というエラーはありません。未定義の参照のちょうどたくさん...それは意味がありませんでしたので、私は簡単なテストアプリケーションを書いた:
#include "SDL/SDL.h"
int main()
{
SDL_Init(SDL_INIT_VIDEO);
return 0;
}
などのようにコンパイル:
g++ `sdl-config --libs --cflags` -o sdl-test ./sdl-test.cpp
私も直接リンクしようとしています「/usr/lib/libSDL-1.2.so.0」または代わり
「/usr/lib/libSDL.a」これらのオプションのすべてに同じ出力で終わる:
/tmp/cc05XT8U.o: In function `main':
sdl-test.cpp:(.text+0xa): undefined reference to `SDL_Init'
collect2: ld returned 1 exit status
誰にもアイデアはありますか?
OPでは、コマンドラインでのライブラリの順序が重要な理由について、この説明を読むこともできます。http://webpages.charter.net/ppluzhnikov/linker.html –
それでした。ありがとう!私はそれが重要であることを知らなかったと思うし、ちょうどいつもそれを正しく書いたことがあった! 雇用ロシア語:うん、それは意味をなさない! もう一度ありがとう! – Caleb1994