1

だから私はXcodeのC++でやっているミニOpenGLプロジェクトを持っています。SOIL ライブラリと GLEW ライブラリ、それぞれのヘッダー ファイル、SDL2、OpenGL、Corefoundation フレームワークなど、いくつかのライブラリを使用しています。このプロジェクトは、次のコンパイラ オプションを使用して Xcode で問題なくビルドされます。C++ 言語の方言を -std=c++11 に設定し、C++ 標準ライブラリを libc++ に設定します。ただし、コマンド ラインで clang を使用してこのプロジェクトをビルドしようとすると、次のコマンドが使用されます。

clang++ -stdlib=libc++ -std=c++11
-I/usr/local/include/SOIL/src 
-I/usr/local/include/glm/glm
-I/usr/local/include/glew-1.10.0/include/ 
-framework SDL2
-framework CoreFoundation
-framework OpenGL 
-L/usr/local/include/glew-1.10.0/lib/ 
-L/usr/local/lib 
main.cpp euchre.cpp euchre.h (These 3 files are in the same directory)

次のエラーが表示されます。

Undefined symbols for architecture x86_64:
"_SOIL_free_image_data", referenced from:
  Euchre::MakeObject::LoadTexture(char const*, int) in euchre-d6b330.o
"_SOIL_load_image", referenced from:
  Euchre::MakeObject::LoadTexture(char const*, int) in euchre-d6b330.o
"___glewActiveTexture", referenced from:
  Euchre::MakeObject::LoadTexture(char const*, int) in euchre-d6b330.o
"___glewAttachShader", referenced from:
  Euchre::MakeObject::LoadShaders(char const*, char const*) in euchre-d6b330.o
"___glewBindBuffer", referenced from:
  Euchre::MakeObject::makeAttribute(unsigned int, char const*, unsigned int, unsigned int, int, unsigned int, unsigned char, int, void const*) in euchre-d6b330.o
  unsigned int Euchre::MakeObject::makeBufferObject<float>(int, unsigned int, unsigned int, std::__1::vector<float, std::__1::allocator<float> >) in euchre-d6b330.o
  unsigned int Euchre::MakeObject::makeBufferObject<unsigned int>(int, unsigned int, unsigned int, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >) in euchre-d6b330.o
"___glewBindVertexArray", referenced from:
  _main in main-6799fc.o
"___glewBufferData", referenced from:
  unsigned int Euchre::MakeObject::makeBufferObject<float>(int, unsigned int, unsigned int, std::__1::vector<float, std::__1::allocator<float> >) in euchre-d6b330.o
  unsigned int Euchre::MakeObject::makeBufferObject<unsigned int>(int, unsigned int, unsigned int, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >) in euchre-d6b330.o
"___glewCompileShader", referenced from:
  Euchre::MakeObject::compileShader(unsigned int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in euchre-d6b330.o
"___glewCreateProgram", referenced from:
  Euchre::MakeObject::LoadShaders(char const*, char const*) in euchre-d6b330.o
"___glewCreateShader", referenced from:
  Euchre::MakeObject::LoadShaders(char const*, char const*) in euchre-d6b330.o
"___glewDeleteBuffers", referenced from:
  _main in main-6799fc.o
"___glewDeleteProgram", referenced from:
  _main in main-6799fc.o
"___glewDeleteShader", referenced from:
  Euchre::MakeObject::LoadShaders(char const*, char const*) in euchre-d6b330.o
"___glewDeleteVertexArrays", referenced from:
  _main in main-6799fc.o
"___glewEnableVertexAttribArray", referenced from:
  Euchre::MakeObject::makeAttribute(unsigned int, char const*, unsigned int, unsigned int, int, unsigned int, unsigned char, int, void const*) in euchre-d6b330.o
"___glewGenBuffers", referenced from:
  unsigned int Euchre::MakeObject::makeBufferObject<float>(int, unsigned int, unsigned int, std::__1::vector<float, std::__1::allocator<float> >) in euchre-d6b330.o
  unsigned int Euchre::MakeObject::makeBufferObject<unsigned int>(int, unsigned int, unsigned int, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >) in euchre-d6b330.o
"___glewGenVertexArrays", referenced from:
  Euchre::MakeObject::makeVertexArrayObject(int) in euchre-d6b330.o
"___glewGetAttribLocation", referenced from:
  Euchre::MakeObject::makeAttribute(unsigned int, char const*, unsigned int, unsigned int, int, unsigned int, unsigned char, int, void const*) in euchre-d6b330.o
"___glewGetShaderiv", referenced from:
  Euchre::MakeObject::compileShader(unsigned int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in euchre-d6b330.o
"___glewLinkProgram", referenced from:
  Euchre::MakeObject::LoadShaders(char const*, char const*) in euchre-d6b330.o
"___glewShaderSource", referenced from:
  Euchre::MakeObject::compileShader(unsigned int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in euchre-d6b330.o
"___glewUseProgram", referenced from:
  _main in main-6799fc.o
"___glewVertexAttribPointer", referenced from:
  Euchre::MakeObject::makeAttribute(unsigned int, char const*, unsigned int, unsigned int, int, unsigned int, unsigned char, int, void const*) in euchre-d6b330.o
"_glewExperimental", referenced from:
  _main in main-6799fc.o
"_glewInit", referenced from:
  _main in main-6799fc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

私が理解していないのは、Xcode と同じ設定でコンパイルする方法ですが、ターミナルではこれを機能させることができません。

4

0 に答える 0