4

VS2010 プロジェクトで GLEW を動作させるためにいくつかの方法を試しました。失敗。最初は、Web サイトからビルド済みのライブラリと dll を使用してみました。これらのビルド済みファイルをhttp://glew.sourceforge.net/index.htmlからダウンロードし、次のようなことを行いました: GLEW ウィンドウのセットアップ?

  1. .h ファイルは C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include に配置されました

  2. .lib ファイルは C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64 に配置されました (念のため、1 レベル上げました)

  3. glew32.dll は C:\Windows\SysWOW64 に移動しました

  4. linker->input glew32.lib、GlU32.lib、および OpenGL32.lib を追加の依存関係に追加します

  5. プリプロセッサ定義: GLEW_BUILD と GLEW_STATIC を入れます (私のプログラムは DLL である必要がありますが、他のプログラムは STATIC で成功しているように見えるので、両方を含めます)

これらの設定でプログラムを実行すると、glewInit() は GLEW_OK ではありません。glewInit() が失敗しても、その関数を奇妙に認識します。「glCreateProgram()」のような別の glew 関数を使用すると、次のエラーが発生します。

Error   56  error LNK2020: unresolved token (0A000327) __glewCreateProgram  
C:\Users\aab\studyWrist\Visualization\libCoin3D\ShaderHandler.obj   libCoin3D

Error   57  error LNK2001: unresolved external symbol __glewCreateProgram   
C:\Users\aab\studyWrist\Visualization\libCoin3D\ShaderHandler.obj   libCoin3D

Error   58  error LNK1120: 2 unresolved externals   
C:\Users\aab\studyWrist\Visualization\libCoin3D\Debug\libCoin3D.dll libCoin3D

したがって、stackoverflow に関するその他の提案は glew を再構築することです。そこで次にVS2010でglew32dをビルドしてみました。OpenGL: How to compile glew32.dll from source fileに従い、glew32d.dll と glew32d.lib を取得しました。

  1. glew32d.lib は C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64 に配置されます (プログラムは x64 フォルダーに配置した場合にのみ lib を認識し、レベルアップではありません)

  2. glew32d.dll は C:\Windows\SysWOW64 に移動しました

  3. linker->input glew32d.lib (これは変更されています)、GlU32.lib、および OpenGL32.lib を追加の依存関係に追加します

  4. プリプロセッサ定義: GLEW_BUILD および GLEW_STATIC に入れる

私の次のエラーは glewInit だけが原因です:

Error   56  error LNK2028: unresolved token (0A000383) "extern "C" unsigned int 
__cdecl glewInit(void)" (?glewInit@@$$J0YAIXZ) referenced in function "public: __cdecl 
MasterCube::MasterCube(void)" (??0MasterCube@@$$FQEAA@XZ)   
 C:\Users\aab\studyWrist\Visualization\libCoin3D\MasterCube.obj libCoin3D

Error   57  error LNK2019: unresolved external symbol "extern "C" unsigned int 
__cdecl glewInit(void)" (?glewInit@@$$J0YAIXZ) referenced in function "public: __cdecl 
MasterCube::MasterCube(void)" (??0MasterCube@@$$FQEAA@XZ)   
C:\Users\aab\wristuptodate\studyWrist\Visualization\libCoin3D\MasterCube.obj    
libCoin3D

何が問題なのか、どうすれば修正できるのでしょうか。

4

2 に答える 2

7

それらをシステム ディレクトリに追加しないでください。システムディレクトリに物を投げるべきではありません。またはMSVCディレクトリ。誤って物を壊さないように、ドライブのどこかにこれらのものを置く場所を確保する必要があります。ライブラリをツール (Visual Studio ディレクトリ) に配置する代わりに、ツール (Visual Studio) にライブラリの場所を伝えます。ライブラリをプロジェクト ディレクトリ内に保持できます。次のセットに従って GLEW をセットアップできます。VC++ win32 コンソール アプリケーション プロジェクトを作成したと仮定します。

ステップ 1. プロジェクト ディレクトリにディレクトリを作成します。ディレクトリ名は「thirdparty」と仮定します。

ステップ 2.ディレクトリthirdpartyのglew-1.9.0ライブラリ フォルダを コピー アンド ペーストします。

ステップ 3. メニュー Project->(projectName)properties.. に移動するか、Alt + F7 を押します。プロジェクトのプロパティ ウィンドウが表示されます。

ステップ 4. [構成プロパティ] -> [VC++ ディレクトリ] オプションに移動します。そこから右側に glew ライブラリのパスを指定します。インクルード ディレクトリにパスを指定: $(ProjectDir)thirdparty\glew-1.9.0\include; ライブラリ ディレクトリでパスを指定します: $(ProjectDir)thirdparty\glew-1.9.0\lib;

次に、リンクの最後の手順に従います。

ステップ 5. リンカ -> 入力オプションに移動します。リンク glew32.dll.In 追加の依存関係: glew32.dll;

于 2013-05-23T06:44:58.817 に答える
3

ベスト プラクティスは、GLEW をプロジェクト フォルダーに追加し、それをアプリケーションにリンクすることです。GLEW (および他のいくつかのライブラリ) をリンクするための段階的なチュートリアルは、次の場所にあります。

http://solarianprogrammer.com/2013/05/10/opengl-101-windows-osx-linux-getting-started/

自分に関係のない部分は無視して、Windows で OpenGL プロジェクトを作成する方法を説明した部分に進んでください。

于 2013-05-23T13:21:25.980 に答える