简体   繁体   English

Assimp链接错误

[英]Assimp linking error

I just downloaded assimp 3.0 library and build the required make files with cmake, then compiled and build the library itself the process was successfull (with little modification to StepFile.h), 我刚刚下载了assimp 3.0库并使用cmake构建了所需的make文件,然后编译并构建了库本身,该过程是成功的(对StepFile.h几乎没有修改),

my assimp header folder is located in: 我的assimp头文件夹位于:

/usr/local/include 在/ usr /本地/包括

and my libassimp.a is located in: 我的libassimp.a位于:

/usr/local/lib 在/ usr / local / lib目录

however when i specify library and header files in my command line project and try to test my project i get the following error: 但是,当我在命令行项目中指定库和头文件并尝试测试我的项目时,我收到以下错误:

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) 

and when i add -lassimp to Other Linker Flags i get the following errors: 当我将-lassimp添加到Other 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)

I had the same issue recently. 我最近遇到了同样的问题。 The actual solution for me was to ensure that the project where I was using the compiled libassimp.a also linked to libz.dylib rather than turn assimp into a .dylib. 对我来说,实际的解决方案是确保我使用已编译的libassimp.a也链接到libz.dylib而不是将assimp转换为.dylib。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM