将旧版iOS App升级到XCode 5后,用于arch i386的未定义符号

时间:2013-11-29 17:01:55

标签: ios xcode

我正在尝试将较旧的(iOS4,5时代)应用更新到iOS7,并且遇到一些我无法弄清楚的编译/链接器问题。

我不确定下面粘贴的小编译错误的解决方案。

这些问题似乎来自我对ScannerKit的使用。我在4.2.1版本上尝试更新到最新的4.3.0,但问题仍然存在。我在“Link Binary with Libraries”构建阶段定义了libScannerKit.a。

Undefined symbols for architecture i386:
  "std::string::find(char, unsigned long) const", referenced from:
      zxing::oned::Code39Reader::decodeRow(int, zxing::Ref<zxing::BitArray>) in libScannerKit.a(Code39Reader.o)
  "std::string::substr(unsigned long, unsigned long) const", referenced from:
      zxing::oned::ConfigurableMultiFormatUPCEANReader::decodeRow(int, zxing::Ref<zxing::BitArray>) in libScannerKit.a(ConfigurableMultiFormatUPCEANReader.o)
      zxing::oned::MultiFormatUPCEANReader::decodeRow(int, zxing::Ref<zxing::BitArray>) in libScannerKit.a(MultiFormatUPCEANReader.o)
      zxing::oned::UPCAReader::maybeReturnResult(zxing::Ref<zxing::Result>) in libScannerKit.a(UPCAReader.o)
      zxing::oned::UPCEReader::convertUPCEtoUPCA(std::string) in libScannerKit.a(UPCEReader.o)
  "std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const", referenced from:
      zxing::BitMatrix::description() in libScannerKit.a(BitMatrix.o)
      zxing::GridSampler::checkAndNudgePoints(zxing::Ref<zxing::BitMatrix>, std::vector<float, std::allocator<float> >&) in libScannerKit.a(GridSampler.o)
      zxing::GF256Poly::description() const in libScannerKit.a(GF256Poly.o)
      zxing::datamatrix::DecodedBitStreamParser::decode(zxing::ArrayRef<unsigned char>) in libScannerKit.a(DecodedBitStreamParser-E74816B4CEA9EA3A.o)
      zxing::oned::Code128Reader::decodeRow(int, zxing::Ref<zxing::BitArray>) in libScannerKit.a(Code128Reader.o)
          zxing::qrcode::DecodedBitStreamParser::decodeByteSegment(zxing::Ref<zxing::BitSource>, std::string&, int) in libScannerKit.a(DecodedBitStreamParser-B6EF2F7091225D41.o)
      zxing::qrcode::DecodedBitStreamParser::decodeNumericSegment(zxing::Ref<zxing::BitSource>, std::string&, int) in libScannerKit.a(DecodedBitStreamParser-B6EF2F7091225D41.o)
  ...
  "std::ostream::flush()", referenced from:
      zxing::datamatrix::DataMatrixReader::decode(zxing::Ref<zxing::BinaryBitmap>) in libScannerKit.a(DataMatrixReader.o)

我正在尝试更新应用程序并仅制作iOS7 +这个最新版本。这个项目很旧,它是在XCode 4的早期版本中创建的,因此我不知道是否存在某种残留的配置文件问题。或者这是针对i386构建ScannerKit的东西,我不是在构建中包含那个拱形的东西?

如果有人有兴趣,here is a full gist of the compile errors

3 个答案:

答案 0 :(得分:0)

好像你没有链接到libstdc ++。将它添加到您的项目“链接的框架和库”,它应该修复您的链接器错误。

答案 1 :(得分:0)

i386是模拟器的架构。可能是因为他们没有编译库以在模拟器架构上运行。尝试在iPhone上加载它,看它是否编译并运行。如果确实如此,那么问题就在于他们没有安装模拟器架构,你只能稍稍烦恼。

您还可以在终端中使用file命令查看它支持的架构。

答案 2 :(得分:0)

我认为你的基础SDK仍然配置错误,请在项目设置下检查&gt;构建设置“基础SDK”和“架构”(它们已经位于列表的顶部)。你也可以试试iOS6 Simulator,看看错误是否仍然存在。