2016-09-06 8 views
2

したがって、g ++で使用するFLTKライブラリを設定しようとしています。私はFLTKをインストールしました。テストサンプルをエラーなしでコンパイルできます。私はBjarne Stroustrups Programming:Principles and Practice第2版に従っており、第12章ではFLTKを取得する必要があります。FLTKをg ++で使用した未定義参照

Stroustrupのコードが提供している(そして彼の例のために作業する必要がある)コードが現在のバージョンのFLTKでは機能していないように見えるので、解決しなければならない問題がたくさんありました。これを行うには、現在のところ、私はおそらく幾分適格推測の下でFLTKと関係があり、Stroustrup提供のコードではなく、それをインストールしたのではなく、それをインストールしたリンカの問題があるようです。私はコンパイル私のテストコード(Helloworld.cpp)を使用していますラインは以下の通りです:ちょうど使用している

g++ -std=c++11 -Wextra -pedantic -I/usr/local/include -I/usr/local/include/FL/images -I/usr/include/freetype2 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT Helloworld.cpp src/Graph.cpp src/GUI.cpp src/Window.cpp -L/usr/local/lib -lfltk -lXfixes -lXext -lXft -lfontconfig -lpthread -ldl -lm -lX11 -ljpeg -Os -Wall -Wunused -Wno-format-y2k -fno-exceptions -fno-strict-aliasing -ffunction-sections -fdata-sections -fexceptions -o HelloWorld 

FLTKを-config設定--cxxflags、--use-画像、 - LDFLAGSと - オプティマイズオプション。私は最後に-fexceptionsを追加しました。なぜなら、コードが例外を利用するためですが、-optimフラグは-fno-exceptionsを追加してから好きなように見えません。

しかし、私は次のエラーメッセージを取得、その行を実行する場合:

/tmp/ccD2Ev5l.o: In function `Graph_lib::Image::Image(Graph_lib::Point, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Graph_lib::Suffix::Encoding)': 
Graph.cpp:(.text._ZN9Graph_lib5ImageC2ENS_5PointENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6Suffix8EncodingE+0x119): undefined reference to `Fl_JPEG_Image::Fl_JPEG_Image(char const*)' 
Graph.cpp:(.text._ZN9Graph_lib5ImageC2ENS_5PointENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6Suffix8EncodingE+0x137): undefined reference to `Fl_GIF_Image::Fl_GIF_Image(char const*)' 
collect2: error: ld returned 1 exit status 

これらFl_JPEG_Image/Fl_GIF_Image関数はヘッダファイルが含まれてFLTKで宣言されているのが、私の推測では、不足しているライブラリコンポーネントがあるかもしれないということです実際の定義が存在します。しかし、私はどこにそれを得るか分からない。どのようにこれを修正するための任意の提案?

答えて

1

-lfltk_imagesを追加します。これらの画像関連の関数には独自のライブラリがあります。

+0

ありがとうございますmichalsrb!それは私が上で述べた問題を実際に処理しましたが、その結果はむしろ残念でした。別のリンカーの問題が、ただ解決された問題の下に隠れていました。そして今、私は代わりにその問題に取り組んでいます。 – Xploit

+0

未解決のシンボルとは何ですか? fltk(私のシステムでは少なくとも)は、4つのライブラリfltk、fltk_forms、fltk_gl、fltk_imagesで構成されています。多分あなたはそれらのいくつかを欠場するでしょうか? – michalsrb

+0

私はそれらのライブラリを見ていましたが、それらはすべて幸いにも/ usr/local/libフォルダに含まれています。エラーメッセージは[code] /usr/local/lib/libfltk_images.a(Fl_JPEG_Image.o)です:関数 'Fl_JPEG_Image :: Fl_JPEG_Image(char const *) ': [code] Fl_JPEG_Image.cxx :(。text._ZN13Fl_JPEG_ImageC2EPKc + 0x9a): 'jpeg_std_error」。 [コード] Fl_JPEG_Image.cxx :(text._ZN13Fl_JPEG_ImageC2EPKc + 0x14e):' jpeg_finish_decompressへの未定義参照への未定義参照 などなどだから、何かがイメージライブラリに再び台無しにされています。何が起こっているのか何か手掛かりはありますか? – Xploit

0

私はそれを解決しました。どうやら、私はある時点で-ljpegフラグを失ってしまい、それを元に戻すと動作します。