【问题标题】:Assimp linking errorAssimp链接错误
【发布时间】:2014-06-23 10:56:32
【问题描述】:

我刚刚下载了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) 

当我将-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)

【问题讨论】:

  • 您是为x86_64 构建的吗?
  • @presiuslitelsnoflek 没关系我重建 assimp 以便它生成三个库文件,我将它包含在我的项目中并且它工作,感谢您的回复。

标签: c++ xcode5 linker-errors static-linking assimp


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我重新构建了 assimp,以便 makefile 生成三个库文件,即 libassimp.3.0.255.dylib libassimp.3.dylib libassimp.dylib,我将它们包含在我的项目中并且它起作用了。

    【讨论】:

      猜你喜欢
      • 2015-06-28
      • 2013-05-01
      • 2022-10-19
      • 2013-04-04
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 2019-11-11
      • 2021-10-25
      相关资源
      最近更新 更多