EclipseのビルFLTKプロジェクト
-
22-09-2019 - |
質問
私は、EclipseでFLTKで設定取得問題を抱えています。私は(私はにここにを発見した)次のコードでOpenGLのウィンドウを作成しようとしています:
#include <FL/Fl.H>
#include <FL/Fl_Gl_Window.H>
#include <FL/gl.h>
//
// Simple resizable 2D GL window
// erco 10/08/05
//
class MyGlWindow : public Fl_Gl_Window {
// DRAW METHOD
// OpenGL window: (w,h) is upper right, (-w,-h) is lower left, (0,0) is center
//
void draw() {
// First time? init viewport, etc.
if (!valid()) {
valid(1);
glLoadIdentity();
glViewport(0,0,w(),h());
glOrtho(-w(),w(),-h(),h(),-1,1);
}
// Clear screen
glClear(GL_COLOR_BUFFER_BIT);
// Draw white 'X'
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_LINE_STRIP); glVertex2f(w(), h()); glVertex2f(-w(),-h()); glEnd();
glBegin(GL_LINE_STRIP); glVertex2f(w(),-h()); glVertex2f(-w(), h()); glEnd();
}
// HANDLE WINDOW RESIZING
// If window reshaped, need to readjust viewport/ortho
//
void resize(int X,int Y,int W,int H) {
Fl_Gl_Window::resize(X,Y,W,H);
glLoadIdentity();
glViewport(0,0,W,H);
glOrtho(-W,W,-H,H,-1,1);
redraw();
}
public:
// CONSTRUCTOR
MyGlWindow(int X,int Y,int W,int H,const char*L=0) : Fl_Gl_Window(X,Y,W,H,L) {
}
};
// MAIN
int main() {
Fl_Window win( 500, 300);
MyGlWindow mygl(10, 10, win.w()-20, win.h()-20);
win.resizable(mygl);
win.show();
return(Fl::run());
}
ここで発行されたコマンドがあります:
make -k all
Building file: ../main.cpp
Invoking: GCC C++ Compiler
g++ -I/usr/include/FL -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"main.d" -MT"main.d" -o"main.o" "../main.cpp"
Finished building: ../main.cpp
Building target: Experiment01
Invoking: GCC C++ Linker
g++ -L/usr/lib -o"Experiment01" ./main.o -lGL -lfltk
そして、ここではエラーがあります:
/usr/include/FL/Fl_Gl_Window.H undefined reference to `Fl_Gl_Window::init()'
/usr/include/FL/Fl_Gl_Window.H undefined reference to `vtable for Fl_Gl_Window'
undefined reference to `Fl_Gl_Window::~Fl_Gl_Window()'
undefined reference to `Fl_Gl_Window::resize(int, int, int, int)'
私はリンクに他に何が必要なのでしょうか?私はなど、-llibfltk.so -llibfltk_gl.soを試してみたが、それは常に、それが指定されたライブラリを見つけることができないと言われています。
解決
あなたは章 "基本例" にチェックしましたか?
あなたはおそらく、すべてのヘッダファイルとディレクトリ「FLTK」を見つけるようにコンパイラに指示する必要があります。これは、通常、コンパイラの行に追加-Iオプションを使用して行われます:
c++ -I/usr/local/include ...
アプリケーションをリンクするときに同様に、あなたはFLTKライブラリとどこそれを見つけることを使用するようにコンパイラに指示する必要があります。 Xでは、あなたは、いくつかのライブラリを含める必要があり、そのFLTK呼び出します:
c++ ... -L/usr/local/lib -lfltk2 -lXext -lXinerama -lXft -lX11 -lXi -lm
あなたのケースでは、FLのすべてのヘッダー定義は/usr/include/FL
ではないことがあります。いくつかの他の場所があるかもしれません。
他のヒント
はスコットが、残念ながらFLTK 1.xのは(私はそれがなかったチェックを少なくとも最後の時間)あなたのよう呼び出すことができるFLTK2ブランチからの優秀なfltk2-config
スクリプトを提供していません。
fltk2-config --use-gl --ldflags
と出力は次のようになります。
-Wl,-rpath,/usr/lib -lfltk2_gl -lGLU -lGL -lfltk2 -lX11 -lXi -lXinerama -lXft -ldl -lpthread -lm -lXext
だから、私はFLTK 1.xのアプリケーションのためにLDFLAGSが可能と考えています
-Wl,-rpath,/usr/lib -lfltk_gl -lGLU -lGL -lfltk -lX11 -lXi -lXinerama -lXft -ldl -lpthread -lm -lXext
所属していません StackOverflow