2017-09-26 1 views
0

私は、ゲームやシミュレータをOpenGLフリーグルートで作ったときに自分用のスタティックライブラリを作っています。私はこのライブラリをGLUtilsと呼んでいます。とりわけvoid GL::drawShape(Vector *points, Color *colors, int size)などの方法を含むstruct Vectorstruct Colornamespace GLが追加されています。 Visual Studio 2017で静的バージョンのfreeglutを使ってGLUtilsをコンパイルしています。テストの使用法をコンパイルするとうまくコンパイルされ、うまくコンパイルされます。また、実行したときにopenglを追加するまでうまくいきました。テストはまだうまくコンパイルされましたが、ロード時にApplication failed to start properlyでクラッシュし、デバッグするときにメインがロードされる前にクラッシュしました。 Dependency Walkerを使用してtest.exeを開くと、freeglut.dllの下にあるkernel32.dllが表示されますが、kernel32.dllの依存関係は満たされています。GLUtils.libはリストにありません(しかし、静的)。カスタムスタティックライブラリをリンクするには?

場合でも、私はGLUtils.cppで実装をコメントアウトし、TEST.EXEはまだ同じエラーでクラッシュし

void GL::drawShape(Vector * points, ColorRGBA * colors, int size) 
{ 
    for (int i = 0; i < size; i++) 
    { 
     //glColor4f(colors[i].r, colors[i].g, colors[i].b, colors[i].a); 
     //glVertex3f(points[i].x, points[i].y, points[i].z); 
    } 
} 

として体を残します。

GLUtils.libとfreeglut.libをTest.exeにどのようにリンクさせるのですか?

+0

使用の#pragmaコメント(libに、 "GLUtils.lib")とfreeglutのために同じことを行うすぎ – Asesh

+0

Test.cppの中や私が使用している何のファイル?私はOpenGLのものを追加する前にそれをする必要はありませんでした。 –

+0

テストプロジェクトはこれらのライブラリにリンクする必要があります。だから、どのファイルに置いても問題ありません – Asesh

答えて

0

このエラーの原因は、型の競合によって発生する可能性があります。

無効GL ::行うdrawShape(ベクトル*ポイント、ColorRGBA *色、int型のサイズ)

上記の関数宣言のために、あなたはあなたのGLUtilsで作成した構造体の定義が、リンカを使用したいです他のライブラリですでに定義されている構造名を見つけて、それらとリンクして実行ファイルを作成します。

このエラーを解決するには、フローティングなど、使用する定義を明示的にリンカーに伝える必要があります。

void GL::drawShape(GL::Vector * points, GL::ColorRGBA * colors, int size) 
関連する問題