GLEWを介してOpenGL拡張関数を呼び出している静的ライブラリがあります。プロジェクトはGCC(NetBeans 7.0)でビルドされており、GLEWのバイナリはVisual-Cフレーバーでのみ出荷されるため、GCCを使用して静的ライブラリとしてGLEW(1.7.0)をビルドしました。(GLEWは純粋なCのようであり、ABIとクロスコンパイラの互換性は問題ではないので、なぜこれが必要なのかについても興味があります。)
静的ライブラリで、GLEW_STATICとNO_SDL_GLEXTをプロジェクトプリプロセッサディレクティブ(-D)として定義してから、
#include "GL/glew.h"
#include "SDL/SDL.h"
次に、静的ライブラリは(テスト)アプリケーションでリンクされます。このアプリケーションは、次の順序で次のライブラリにもリンクします。
my_static_library
mingw32
glew32
opengl32
SDLmain
SDL
この設定により、静的ライブラリに2つの未定義の参照エラーが発生します。
undefined reference to `_imp____glewGetStringi'
undefined reference to `_imp__glewInit'
実際、これらは静的ライブラリでGLEW機能に対して行われる2つの呼び出しです。ただし、リンカが(-DGLEW_STATICの前に)不平を言っていた他の呼び出しがありますが、現在は問題ないようです。
リンケージの順序をopengl32とglew32(wgl...
呼び出しに対するいくつかの未定義の参照)に入れ替えても、状況を改善できませんでした。さらに、GLEW_STATIC(およびNO_SDL_GLEXT)は、以前はテストアプリケーションで定義されていましたが、削除されており、問題ではないようです。
残りのエラーが発生するのはなぜですか?それらを取り除くために何ができますか?つまり、SDLを使用してGCCでGLEWを使用するにはどうすればよいですか?