2010-10-27 1 views
1

Я пытаюсь скомпилировать примерный исходный код, который использует OpenGL, SDL и IL aka DevIL aka библиотеки OpenIL. OpenGL и SDL доступны в качестве встроенных фреймворков, но DevIL - нет. Итак, вот что я сделал:Использование динамической библиотеки (DevIL/OpenIL) в проекте Xcode

Я установил 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 

который дает мне DevI L в /usr/local/include/ и динамических библиотеках в /usr/local/lib/. Затем я добавил библиотеки в свой проект со следующими шагами:

  • правой кнопкой мыши на моей только Target
  • Нажмите «Добавить> Существующие рамочные»
  • Выберите «Dylibs»
  • Добавить libIL.dylib, libILU.dylib и libILUT.dylib

(там также libIL.1.dylib, libILU.1.dylib и libILUT.1.dylib доступны в списке, является то, что норма ? Ал)

Затем я добавил следующие флаги в "Project> Изменить настройки проекта> Build> Другие Linker Flags":

-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 файлы не строится правильно, и в результате не были найдены символы, но как я могу сделать эту работу? Я сделал какие-то ошибки? Есть ли способ построить библиотеки по-разному, чтобы они работали с моим проектом, или я могу каким-то образом изменить архитектуру сборки моего проекта?

Большое вам спасибо за помощь!

ответ

1

Я решил проблему, изменив формулу варева на:

def install 
    system "./configure", "--disable-debug", "--disable-dependency-tracking", 
         "--prefix=#{prefix}", "--enable-ILU", "--enable-ILUT", 
         "CFLAGS=-arch i386", "CXXFLAGS=-arch i386" 
    system "make install" 
end 
+0

на самом деле, я столкнулся с множеством проблем при компоновке этой библиотеки, как-то ломает все это ... –

+0

Можете ли вы отправить мне библиотеки, пожалуйста? Вы можете найти мой адрес электронной почты внутри моего окна описания. –

+0

Извините, у меня их больше нет. просто установите homebrew из https://github.com/mxcl/homebrew, а затем введите 'brew install devil' в окне командной строки. если вам нужна стандартная конфигурация, это должно работать отлично. –

Смежные вопросы