将较旧的iOS应用程序升级到XCode 5后,用于arch i386的未定义符号

将较旧的iOS应用程序升级到XCode 5后,用于arch i386的未定义符号,ios,xcode,Ios,Xcode,我正在尝试将一个较旧的(iOS4,5时代)应用程序更新到iOS7,但遇到了一些编译/链接器问题,我无法解决 我不确定下面粘贴的一小部分编译错误的解决方案 这些问题似乎是由于我使用了。我使用的是4.2.1版本,并试图更新到最新的4.3.0,但问题仍然存在。在我的“用库链接二进制文件”构建阶段,我定义了libScannerKit.a Undefined symbols for architecture i386: "std::string::find(char, unsigned long) c

我正在尝试将一个较旧的(iOS4,5时代)应用程序更新到iOS7,但遇到了一些编译/链接器问题,我无法解决

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

这些问题似乎是由于我使用了。我使用的是4.2.1版本,并试图更新到最新的4.3.0,但问题仍然存在。在我的“用库链接二进制文件”构建阶段,我定义了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)
架构i386的未定义符号: “std::string::find(char,unsigned long)const”,引用自: libScannerKit.a(Code39Reader.o)中的zxing::oned::Code39Reader::decodeRow(int,zxing::Ref) “std::string::substr(无符号长、无符号长)常量”,引用自: libScannerKit.a(configurablemultiformationupceanreader.o)中的zxing::oned::configurablemultiformationupceanreader::decodeRow(int,zxing::Ref) libScannerKit.a(MultiFormatUPCEANReader.o)中的zxing::oned::MultiFormatUPCEANReader::decodeRow(int,zxing::Ref) libScannerKit.a(UPCAReader.o)中的zxing::oned::UPCAReader::mayberturnresult(zxing::Ref) libScannerKit.a(UPCEReader.o)中的zxing::oned::UPCEReader::convertUPCEtoUPCA(std::string) “std::basic_stringbuf::str()const”,引用自: libScannerKit.a(BitMatrix.o)中的zxing::BitMatrix::description() libScannerKit.a(GridSampler.o)中的zxing::GridSampler::checkandnumedgepoints(zxing::Ref,std::vector&) libScannerKit.a(GF256Poly.o)中的zxing::GF256Poly::description()常量 libScannerKit.a(DecodedBitStreamParser-E74816B4CEA9EA3A.o)中的zxing::datamatrix::DecodedBitStreamParser::decode(zxing::ArrayRef) libScannerKit.a(Code128Reader.o)中的zxing::oned::Code128Reader::decodeRow(int,zxing::Ref) libScannerKit.a(DecodedBitStreamParser-B6EF2F7091225D41.o)中的zxing::qrcode::DecodedBitStreamParser::decodebytestegment(zxing::Ref,std::string&,int) libScannerKit.a(DecodedBitStreamParser-B6EF2F7091225D41.o)中的zxing::qrcode::DecodedBitStreamParser::decodednumericsegment(zxing::Ref,std::string&,int) ... “std::ostream::flush()”,引用自: libScannerKit.a(DataMatrixReader.o)中的zxing::datamatrix::DataMatrixReader::decode(zxing::Ref) 我正在尝试更新应用程序,并仅发布最新版本的iOS7+。这个项目是旧的,它最初是在XCode 4的早期版本中创建的,所以我不知道是否存在某种残留的配置文件问题或其他问题。或者这是ScannerKit基于i386构建的东西,而我的构建中没有包括拱门之类的东西


如果有人感兴趣,

您似乎没有链接到libstdc++。将其添加到项目“链接的框架和库”中,它将修复链接器错误。

i386是模拟器的体系结构。这可能是因为他们没有编译库以在模拟器架构上运行。尝试将其加载到iPhone上,看看它是否编译并运行。如果是这样的话,那么问题很简单,他们没有安装模拟器体系结构,而您只需要稍微麻烦一点就可以继续


您还可以在终端中使用
文件
命令查看它支持哪些体系结构。

我认为您的基本SDK配置仍然错误,请在项目设置>构建设置“基本SDK”和“体系结构”下进行检查(它们已经位于列表顶部)。您也可以尝试iOS6模拟器,看看错误是否仍然存在。

不,我也想到了这一点,并且已经添加了
libstd++
。这并没有改变任何东西您也可以尝试将-lstdc++添加到“其他liker标志”中,并检查是否已在生成输出中将-stdlib=libc++传递给liker,否则,如果你已经链接到LIbSTDC++ ++,听起来很奇怪,也可以检查这个答案:它可能是因为C++中的方法限制。还有这个:因为您正在更新一个旧项目,所以您的编译器设置可能会出错。基本SDK是(最新的iOS 7.0),并且有效的体系结构是否设置为armv7和armv7s?