OpenGL、SDL、およびIL別名DevIL別名OpenILライブラリを使用しているサンプルソースコードをコンパイルしようとしています。OpenGL と SDL はネイティブ フレームワークとして利用できますが、DevIL は利用できません。だからここに私がしたことがあります:
自作でDevILをインストールしました。ILUTが必要なので、最初にフォーミュラを変更しました:
brew edit devil
次に、これらの行を編集しました
def install
system "./configure", "--disable-debug", "--disable-dependency-tracking",
"--prefix=#{prefix}", "--enable-ILU"
system "make install"
end
そのようです
def install
system "./configure", "--disable-debug", "--disable-dependency-tracking",
"--prefix=#{prefix}", "--enable-ILU", "--enable-ILUT"
system "make install"
end
そしてすべてをインストールしました
[sudo] brew install devil
これにより、DevIL ヘッダーが/usr/local/include/
に、動的ライブラリが に含まれ/usr/local/lib/
ます。次に、次の手順でライブラリをプロジェクトに追加しました。
- 唯一のターゲットを右クリック
- 「追加 > 既存のフレームワーク」をクリックします。
- 「ダイリブ」を選択
- を追加し
libIL.dylib
、libILU.dylib
libILUT.dylib
( もあり、libIL.1.dylib
一覧に表示されますが、それは正常ですか?)libILU.1.dylib
libILUT.1.dylib
次に、「プロジェクト>プロジェクト設定の編集>ビルド>その他のリンカーフラグ」に次のフラグを追加しました。
-lil -lilu -lilut
プロジェクトをコンパイルしてリンクしようとすると、次のエラーが発生します。
Ld "build/Debug/XCode OpenGL OOP Framework.app/Contents/MacOS/XCode OpenGL OOP Framework" normal i386
cd "/Users/padde/Documents/Studium/sem5/computergrafik/opengl intro/xcode projects/XCode OpenGL OOP Framework"
/Developer/usr/bin/g++-4.2 -arch i386 "-L/Users/padde/Documents/Studium/sem5/computergrafik/opengl intro/xcode projects/XCode OpenGL OOP Framework/build/Debug" "-F/Users/padde/Documents/Studium/sem5/computergrafik/opengl intro/xcode projects/XCode OpenGL OOP Framework/build/Debug" -filelist "/Users/padde/Documents/Studium/sem5/computergrafik/opengl intro/xcode projects/XCode OpenGL OOP Framework/build/XCode OpenGL OOP Framework.build/Debug/XCode OpenGL OOP Framework.build/Objects-normal/i386/XCode OpenGL OOP Framework.LinkFileList" -framework Foundation -framework AppKit -framework GLUT -framework OpenGL -framework SDL -lIL -lILU -lILUT -o "/Users/padde/Documents/Studium/sem5/computergrafik/opengl intro/xcode projects/XCode OpenGL OOP Framework/build/Debug/XCode OpenGL OOP Framework.app/Contents/MacOS/XCode OpenGL OOP Framework"
ld: warning: in /usr/local/lib/libIL.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /usr/local/lib/libILU.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
ld: warning: in /usr/local/lib/libILUT.dylib, file was built for unsupported file format which is not the architecture being linked (i386)
Undefined symbols:
"_ilInit", referenced from:
RenderEngine::initManagers() in RenderEngine.o
"_ilGetData", referenced from:
TextureManager::loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, unsigned int, bool, bool)in TextureManager.o
"_ilBindImage", referenced from:
TextureManager::loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, unsigned int, bool, bool)in TextureManager.o
"_ilLoadImage", referenced from:
TextureManager::loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, unsigned int, bool, bool)in TextureManager.o
"_ilGenImages", referenced from:
TextureManager::loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, unsigned int, bool, bool)in TextureManager.o
"_ilGetInteger", referenced from:
TextureManager::loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, unsigned int, bool, bool)in TextureManager.o
TextureManager::loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, unsigned int, bool, bool)in TextureManager.o
TextureManager::loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, unsigned int, bool, bool)in TextureManager.o
TextureManager::loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, unsigned int, bool, bool)in TextureManager.o
"_ilDeleteImages", referenced from:
TextureManager::loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, unsigned int, bool, bool)in TextureManager.o
TextureManager::loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, unsigned int, bool, bool)in TextureManager.o
TextureManager::loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, unsigned int, unsigned int, bool, bool)in TextureManager.o
"_main", referenced from:
start in crt1.10.6.o
(maybe you meant: _SDL_main)
ld: symbol(s) not found
collect2: ld returned 1 exit status
どうやら、.dylib
ファイルが正しくビルドされていないため、シンボルが見つからないのですが、どうすればこれを機能させることができますか? 私は間違いを犯しましたか?私のプロジェクトで動作するようにライブラリを別の方法でビルドする方法はありますか、またはプロジェクトのビルドアーキテクチャを何らかの方法で変更できますか?
手伝ってくれてどうもありがとう!