1

GLFW を C プログラムにリンクしようとしています。

ドキュメントは示唆しているようですが#include<GLFW/glfw3.h>、(ディストリビューションのリポジトリから)2.7.2をインストールしましたが、そのヘッダーファイルはありません:

find / -name *glfw* 2> /dev/null
/usr/lib/libglfw.so.2.6
/usr/lib/libglfw.a
/usr/lib/libglfw.so
/usr/lib/pkgconfig/libglfw.pc
/usr/lib/libglfw.so.2
/usr/include/GL/glfw.h
/usr/share/doc/libglfw-dev
/usr/share/doc/libglfw2
/var/cache/apt/archives/libglfw2_2.7.2-1_i386.deb
/var/cache/apt/archives/libglfw-dev_2.7.2-1_i386.deb
/var/lib/dpkg/info/libglfw2.list
/var/lib/dpkg/info/libglfw2.postinst
/var/lib/dpkg/info/libglfw-dev.md5sums
/var/lib/dpkg/info/libglfw2.postrm
/var/lib/dpkg/info/libglfw2.md5sums
/var/lib/dpkg/info/libglfw2.shlibs
/var/lib/dpkg/info/libglfw-dev.list

試してみ#include<GL/glfw.h>ましたが、それでも取得できますundefined reference to 'glfwLoadTexture2D'

GLFW にリンクして使用するにはどうすればよいglfwLoadTexture2D()ですか?

4

2 に答える 2

3

An#includeはリンカに対して何もしません。実際の関数ではなく、宣言を取り込むだけです。

ドキュメンテーションは、GLFW がpkg-configを使用することを示しています (驚くべきことではありません。@elmindredaは彼女のものを知っています)。したがって、コンパイル行は次のようになります。

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

また、ライブラリは を使用するためpkg-config、特定のインストールでヘッダーやライブラリ ファイルがどこにあるかなどの詳細について「気にする」ことは想定されていないことに注意してください。--cflags--libsモードを使用して尋ねるだけで、上記の例が示すように、適切な場所が返されます。

于 2013-09-27T11:40:23.577 に答える
1

コンパイルとリンクを混同しています。ヘッダーが欠落している場合、リンク段階よりもずっと早くエラーが発生する可能性があります。

「未定義の参照」は、リンカーによってシンボルが見つからないために発生します。最も可能性の高い原因はgcc、GLFW ライブラリにリンクする必要があることを伝えていないことです。

 gcc myfile.c -lglfw
于 2013-09-27T11:41:48.410 に答える