web-dev-qa-db-ja.com

OpenGL GLFW:「glfwInit」への未定義の参照

この質問は、StackOverflowや他のサイトで何度も尋ねられていることを理解しています。これらのリソースを確認した後、私はまだ途方に暮れています。

GLFWを使用して自分のマシン(Windows 7 64ビット)でOpenGLを動作させようとしているだけです。

私が抱えている問題は、他の多くの問題と同じです。「 'glfwInit'への未定義の参照」という単一のリンカーエラーが発生します。私がコンパイルしようとしているコードは、可能な限り単純です(Test.cppファイル内)。

#include <iostream>
#include <GLFW/glfw3.h>
int main()
{
    std::cout << "hello world" << std::endl;
    glfwInit();
    return 0;
}

単純なMakefileを使用してコンパイルを試みています。

Test: Test.o
    g++ -o Test  -L./lib -lglew32 -lglfw3 -lopengl32 -lglu32 -lgdi32 Test.o

Test.o: Test.cpp
    g++ -I./include -c Test.cpp

追加情報:
* g ++を使用したコンパイル(MinGW32)
* libフォルダーには、glfw3.dll、libglfw3.a、およびlibglfw3dll.a(GLFW WebサイトからダウンロードされたWin32バージョン-Windowsプリコンパイル済みライブラリ)が含まれています。
*インクルードフォルダーには、glfw3.hとglfw3native.h(ダウンロードしたGLFWから-インクルードフォルダー)を含むGLFWという名前のフォルダーが含まれています。

私が試してみました:
* GLFWの64ビットバージョンを使用
* IDEの使用(Eclipse、VS)
* GLFW Undefined References の提案
*の提案 未定義の参照/未解決の外部シンボルエラーとは何ですか?それを修正するにはどうすればよいですか? (リンク引数の順序を入れ替える)
*提案 OpenGLとEclipse CDT + MinGW + GLEW + GLFW:未定義の参照
* CMakeを使用してライブラリを自分でコンパイルしようとしましたが、プロセスで作成された.a、.lib、または.dllファイルが表示されません。

追加情報が役立つかどうか教えてください。

4
Matt Martin

すべてのライブラリをGCCに正しくリンクし、エラーが表示されないが、「glfwInit()」のような関数が定義されていない場合は、使用しているMinGWのバージョンを確認してください。 MinGWの86xバージョンを使用する場合、ライブラリも86xである必要があります。同じことがおそらく64xにも当てはまりますが、私はまだチェックしていません。

私は一日中その問題を解決しようとしていました、そしてこれが理由でした。私がそれで誰かを助けたことを本当に願っています。

1
Shuriken255

コードブロックでも同じ問題が発生し、最初にlibglfw3dll.aをリンクしてから、libglfw3.aをリンクすることで解決しました。それ以外の場合は、未定義の参照エラーが発生します

0
Hank W