次のプログラムを考えて、Cygwin でコンパイルしてみましょう。
#include <GL/glut.h>
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glLoadIdentity();
}
コンパイルして問題なく動作します。-I/usr/include/opengl
めちゃくちゃ重要なようです。
g++ -I/usr/include/opengl -I../include/cygwin -L../lib/cygwin test.cpp -o test.exe -lglut32 -lglu32 -lglew32 -lopengl32
今、
#include <GL/glew.h> // from newest NVIDIA SDK
#include <GL/glut.h>
int main(int argc, char** argv)
{
glewInit();
glutInit(&argc, argv);
glLoadIdentity();
}
によって編集された
g++ -I/usr/include/opengl -I../include/cygwin -L../lib/cygwin test.cpp -o test.exe -lglut32 -lglu32 -lglew32 -lopengl32
失敗します。2 番目のアプリケーションをビルドする方法
初め
NVIDIA SDK から glew by をビルドするには、VS、cygwin、-D_WIN32 を指定した cygwin など、いくつかの方法があります。ソースからオリジナル glew の cygwin ビルドも試しました。
VSビルドが与える
/cygdrive/c/DOCUME~1/kelebron/LOCALS~1/Temp/ccErbecl.o:test.cpp:(.text+0xa8): undefined reference to `_glLoadIdentity'
collect2: ld returned 1 exit status
cygwin ビルドは多くを提供します
../lib/cygwin/glew32.lib(glew.o):glew.c:(.text+0x38e): undefined reference to `_glXGetProcAddress'
また、-D_WIN32 を指定した cygwin はまったくコンパイルされません (この投稿に少し刺激を受けました)。
2番
-L/lib/w32api
または -L/usr/X11R6/lib -lX11 -lXi -lXmuを使用して OpenGL とリンクするには、2 つの方法があるようです。
ただし、-L ディレクティブは何も変更しません。/usr/lib/w32api/libopengl32.a がありますが、X11 バージョン (/usr/X11R6/lib/libGL?) がない可能性があります。Cygwin にはどのパッケージを含める必要がありますか? libGLから始まるすべてをインストールしました(だけでなく...)。