2017-12-23 9 views
-1

GLFWを使い始めようとしていますが、ライブラリをリンクしようとすると問題が発生します。GLFWライブラリのリンクエラー

私はGLFWページの最初の例をコンパイルしようとしています。

#include <GLFW/glfw3.h> 

int main(void) 
{ 
    GLFWwindow* window; 

    /* Initialize the library */ 
    if (!glfwInit()) 
     return -1; 

    /* Create a windowed mode window and its OpenGL context */ 
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); 
    if (!window) 
    { 
     glfwTerminate(); 
     return -1; 
    } 

    /* Make the window's context current */ 
    glfwMakeContextCurrent(window); 

    /* Loop until the user closes the window */ 
    while (!glfwWindowShouldClose(window)) 
    { 
     /* Render here */ 
     glClear(GL_COLOR_BUFFER_BIT); 

     /* Swap front and back buffers */ 
     glfwSwapBuffers(window); 

     /* Poll for and process events */ 
     glfwPollEvents(); 
    } 

    glfwTerminate(); 
    return 0; 
} 

コンパイラ私は

glfw3.dll

私はそれをコンパイルしようとすると

libglfw3dll.a、私はこのリンカを取得する必要があり、私のプロジェクトフォルダで

g++ -L. libglfw3dll.a -lglfw3 -lopengl32 main.cpp 

エラー

`__imp_glClear 'への未定義の参照

私は間違っていますか?

/----------------------編集--------------------- -------/

申し訳ありませんが、私はWindowsの10、64ビットに取り組んでいます

少し私の状況を明らかにする可能性がある事を、...と言うのを忘れていました。

コンパイラ - > Mingwを バイナリ - >私は静的ライブラリを使用してコードをコンパイルしようとしましたが、私は未定義の参照のたくさん持っ公式ページから

をダウンロード。

g++ -L. -lopengl32 -lglu32 -lgdi32 -lglfw3 main.cpp 

次に、ダイナミックライブラリglfw.dllを使用しようとしました。また、glfwdll.aライブラリをリンクし、ヘッダーをインクルードする前にGLFW_DLLマクロを定義しました。最後のオプションで

g++ -L. libglfw3dll.a -lglfw3 -lopengl32 main.cpp 

、私は、これはopengl32ライブラリからのものであることを理解するだけで1未定義の参照

undefined reference to `__imp_glClear' 

を得ました。

私は私が見つけることができないものを紛失していることも理解しています。

ここで私はもう一度来ます、あなたは私に手を差し伸べて、私に何が欠けているか教えてください。

ありがとうございます!

+0

[learnopengl](https://learnopengl.com/#!Getting-started/Creating-a-window)の_GLAD_セクションに移動してください。それはここでの問題かもしれません。 –

答えて

0

お読みくださいマニュアルGLFW: Building applications

ベローはGNU環境の一部を引用しています。 Windows用のアプリケーションを開発する場合は、そこに適切な指示もあります。

GLFWはpkg-configをサポートしており、glfw3.pc pkg-configファイルは、GLFWライブラリをビルドしてインストールするときに生成されます。 pkg-configファイルには、ライブラリを使用するために必要なコンパイル時およびリンク時のすべてのフラグと依存関係が記述されています。それらが更新されたり、システム間で異なる場合は、自動的に正しいものを取得します。

典型的なコンパイルとリンクのコマンドラインのように見えるかもしれGLFWライブラリの静的バージョンを使用して:

cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --static --libs glfw3` 

あなたはGLFWライブラリの共有バージョンを使用している場合は、単に--staticフラグを省略します。

cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --libs glfw3` 

またPKG_CONFIG_PATH環境変数を使用して、最初にそれをインストールすることなくglfw3.pcファイルを使用することができます。

env PKG_CONFIG_PATH=path/to/glfw/src cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --libs glfw3` 

GLFWはどんなのOpenGL、OpenGL ESのか、バルカンのライブラリをロードするよう、依存関係は、それが実行時に必要とGLUを使用していない、OpenGLのか、GLUは含まれていません。 OS Xでは、GLUはOpenGLフレームワークに組み込まれているので、GLUが必要な場合は、何も追加する必要はありません。 GLUが必要で、LinuxまたはBSDを使用している場合は、glu pkg-configパッケージを追加する必要があります。

cc `pkg-config --cflags glfw3 glu` -o myprog myprog.c `pkg-config --libs glfw3 glu` 

GLUは廃止されましたし、新しいコードでは使用すべきではないが、いくつか レガシーコードは、それを必要とします。

静的バージョンのGLFWライブラリを使用している場合は、静的にGLUにリンクしないようにしてください。

cc `pkg-config --cflags glfw3 glu` -o myprog myprog.c `pkg-config --static --libs glfw3` `pkg-config --libs glu`