2013/01/13

GLEWのスタティックリンク(静的リンク)ライブラリの使用方法

GLEWのソースコードをダウンロードしてスタティックリンク用プロジェクト(glew_static)をビルドすると生成されるglew32s.libをOpenGL使用プロジェクトにリンクさせる場合の使用方法もしくは注意事項の解説。

glew32s.libをリンカで指定しているにもかかわらず、ビルドすると下記のようなエラーがうんたらかんたらと出ます。
error LNK2001:外部シンボル "__imp__glewInit@0" は未解決です

これはGLEWライブラリはDLLの使用を推奨する前提で作成されているためです。具体的にはデフォルトでglew.h内に定義されているifdef分岐はDLL用になっているため、スタティック用の宣言でスイッチさせなければなりません。

解決するには以下の手順を行ってください。

まず、ライブラリファイル名をglew32s.libからglew32.libにリネームします。
別にリネームしなくてもいいですが、サンプルコードを試すときに一々読み替えるのは手間なのでリネームします。

次に、#include <gl/glew.h>を宣言する前に#define GLEW_STATICを定義してください。

[cpp]
#pragma comment(lib, "OpenGL32.lib")
#pragma comment(lib, "glew32.lib")

#define GLEW_STATIC

#include <windows.h>
#include <tchar.h>
#include <gl/glew.h>
[/cpp]

これはソースコードに直接宣言しなくても、プロジェクトプロパティの[構成プロパティ]-[C/C++]-[プリプロセッサ]の「プリプロセッサの定義」やコンパイルコマンド実行時に定義してもいいです。

以上でビルドを行えば完了です。

0 件のコメント:

コメントを投稿