2

我刚刚下载assimp 3.0了库并使用cmake构建了所需的make文件,然后编译并构建了库本身,过程成功(对StepFile.h几乎没有修改),

我的 assimp 头文件夹位于:

/usr/local/包括

我的 libassimp.a 位于:

/usr/local/lib

但是,当我在命令行项目中指定库和头文件并尝试测试我的项目时,出现以下错误:

Undefined symbols for architecture x86_64:
"Assimp::Importer::Importer()", referenced from:
  _main in main.o
"Assimp::Importer::~Importer()", referenced from:
  _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

当我添加时-lassimpOther Linker Flags我得到以下错误:

Undefined symbols for architecture x86_64:
"_crc32", referenced from:
  _unzReadCurrentFile in libassimp.a(unzip.c.o)
"_get_crc_table", referenced from:
  _unzOpenCurrentFile3 in libassimp.a(unzip.c.o)
"_inflate", referenced from:
  Assimp::XGLImporter::InternReadFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, aiScene*, Assimp::IOSystem*) in libassimp.a(XGLLoader.cpp.o)
  Assimp::BlenderImporter::InternReadFile(std::__1::basic_string<char,  std::__1::char_traits<char>, std::__1::allocator<char> > const&, aiScene*, Assimp::IOSystem*) in libassimp.a(BlenderLoader.cpp.o)
  Assimp::XFileParser::XFileParser(std::__1::vector<char, std::__1::allocator<char> > const&) in libassimp.a(XFileParser.cpp.o)
  _unzReadCurrentFile in libassimp.a(unzip.c.o)
 "_inflateEnd", referenced from:
  Assimp::XGLImporter::InternReadFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, aiScene*, Assimp::IOSystem*) in libassimp.a(XGLLoader.cpp.o)
  Assimp::BlenderImporter::InternReadFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, aiScene*, Assimp::IOSystem*) in libassimp.a(BlenderLoader.cpp.o)
  Assimp::XFileParser::XFileParser(std::__1::vector<char, std::__1::allocator<char> > const&) in libassimp.a(XFileParser.cpp.o)
  _unzCloseCurrentFile in libassimp.a(unzip.c.o)
  "_inflateInit2_", referenced from:
  Assimp::XGLImporter::InternReadFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, aiScene*, Assimp::IOSystem*) in libassimp.a(XGLLoader.cpp.o)
  Assimp::BlenderImporter::InternReadFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, aiScene*, Assimp::IOSystem*) in libassimp.a(BlenderLoader.cpp.o)
  Assimp::XFileParser::XFileParser(std::__1::vector<char, std::__1::allocator<char> > const&) in libassimp.a(XFileParser.cpp.o)
  _unzOpenCurrentFile3 in libassimp.a(unzip.c.o)
  "_inflateReset", referenced from:
  Assimp::XFileParser::XFileParser(std::__1::vector<char, std::__1::allocator<char> > const&) in libassimp.a(XFileParser.cpp.o)
  "_inflateSetDictionary", referenced from:
  Assimp::XFileParser::XFileParser(std::__1::vector<char, std::__1::allocator<char> >  const&) in libassimp.a(XFileParser.cpp.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
4

2 回答 2

2

我最近有同样的问题。对我来说,实际的解决方案是确保我使用编译的项目libassimp.a也链接到libz.dylib而不是将 assimp 转换为 .dylib。

于 2015-03-18T16:06:20.430 回答
1

我重建了assimp,以便makefile产生三个库文件libassimp.3.0.255.dylib libassimp.3.dylib libassimp.dylib,我将它们包含在我的项目中并且它可以工作。

于 2014-05-08T17:15:38.360 回答