0

私は C++ と Opengl を使用しており、SOIL を使用しようとしていますが、コンパイルすると、glBindTexture、glTexImage2D などへの未定義の参照が取得されます。これはエラーが生成するものです:

http://pastebin.com/sKrQaBhz

グラフィック カードは NVIDIA GeForce GTX 680 で、ドライバーは完全に更新されています。私はすべてをリンクしており、premake を使用してプロジェクトを管理しています。Linux マシンで開発していますが、Windows マシンでクロス コンパイルしようとすると、このエラーが発生します。Linuxでコンパイルすると、まったく問題ありません。これは私の premake4.lua ファイルです:

http://pastebin.com/T4hsbdz0

私のインクルードファイルはこれです:

#include "opengl/gl_core_3_3.hpp"
#include <GLFW/glfw3.h>
#include <SOIL/SOIL.h>
#include <glm/glm.hpp>
#include <glm/gtx/transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include "loadshader.hpp"

私は mingw32 を使用してコードをコンパイルしています。SOIL を使用する前は、すべて問題ありませんでした。lonesock.net の Web ページから SOIL をダウンロードし、libSOIL.a とそのインクルード ファイルをコピーしましたが、うまくいきません。

4

2 に答える 2

0

SOILのホームページを見てみると、静的にリンクする必要があるとのことでした。そのため、ダイナミック リンク (gcc コンパイラでは「-l」) を使用する代わりに、ライブラリのフル パスを指定してみてください。

この投稿は、私が言いたいことを示しています: https://stackoverflow.com/a/4156190/2293156

gcc -lsome_dynamic_lib some_static_lib.a code.c

于 2013-08-14T17:58:27.897 に答える