Objective c 未定义的符号,包括Zxing到Xcode 4.3+;Obj-C

Objective c 未定义的符号,包括Zxing到Xcode 4.3+;Obj-C,objective-c,ios,xcode4.3,zxing,Objective C,Ios,Xcode4.3,Zxing,我在将ZXingWidget包含到以前的iOS项目中时遇到了一些问题 这是我早些时候使用XCode4.3+ARC for iOS启动的一个项目。对于这个项目,我需要包括ZXing扫描 我遵循了提供的自述 将zxing复制到项目根目录中,添加ZXingWidget.xcodeproj项目 在构建阶段添加链接libZXingWidget.a 将ZXingWidget添加到目标依赖项 标题搜索路径-递归$(SRCROOT)/zxing只读/iphone/ZXingWidget/Classes 标题搜索

我在将ZXingWidget包含到以前的iOS项目中时遇到了一些问题

这是我早些时候使用XCode4.3+ARC for iOS启动的一个项目。对于这个项目,我需要包括ZXing扫描

我遵循了提供的自述

  • 将zxing复制到项目根目录中,添加ZXingWidget.xcodeproj项目
  • 在构建阶段添加链接libZXingWidget.a
  • 将ZXingWidget添加到目标依赖项
  • 标题搜索路径-递归$(SRCROOT)/zxing只读/iphone/ZXingWidget/Classes
  • 标题搜索路径-非递归$(SRCROOT)/zxing只读/cpp/core/src
  • 导入所有必需的iOS框架
  • 注意事项:

    • ZXing在iphone模拟器上正确编译和运行
    • 我得到了关于未定义符号的66个错误。(下面的例子)
    • Zxing代码是从SVN获得的(我也尝试了zip下载,但有64个错误)
    但是我不能直接从代码中导入任何文件 (#导入不起作用)

    我也试过了,但运气不好

    还有什么我错过的可能性吗

    感谢您的帮助

    我现在得到一些错误输出

    Undefined symbols for architecture i386:
    "std::ios_base::Init::Init()", referenced from:
      ___cxx_global_var_init in libZXingWidget.a(Binarizer.o)
      ___cxx_global_var_init in libZXingWidget.a(BinaryBitmap.o)
      ___cxx_global_var_init in libZXingWidget.a(Array.o)
      ___cxx_global_var_init in libZXingWidget.a(BitArray.o)
      ___cxx_global_var_init in libZXingWidget.a(BitMatrix.o)
      ___cxx_global_var_init in libZXingWidget.a(BitSource.o)
      ___cxx_global_var_init in libZXingWidget.a(Counted.o)
      ...
    "std::terminate()", referenced from:
      zxing::Binarizer::Binarizer(zxing::Ref<zxing::LuminanceSource>) in libZXingWidget.a(Binarizer.o)
      zxing::Binarizer::~Binarizer() in libZXingWidget.a(Binarizer.o)
      zxing::BinaryBitmap::BinaryBitmap(zxing::Ref<zxing::Binarizer>) in libZXingWidget.a(BinaryBitmap.o)
      zxing::BinaryBitmap::~BinaryBitmap() in libZXingWidget.a(BinaryBitmap.o)
      zxing::BinaryBitmap::getBlackRow(int, zxing::Ref<zxing::BitArray>) in libZXingWidget.a(BinaryBitmap.o)
      zxing::BinaryBitmap::getWidth() const in libZXingWidget.a(BinaryBitmap.o)
      zxing::BinaryBitmap::getHeight() const in libZXingWidget.a(BinaryBitmap.o)
      ...
    "operator delete(void*)", referenced from:
      zxing::Binarizer::~Binarizer() in libZXingWidget.a(Binarizer.o)
      zxing::Counted::~Counted() in libZXingWidget.a(Binarizer.o)
      zxing::BinaryBitmap::~BinaryBitmap() in libZXingWidget.a(BinaryBitmap.o)
      zxing::BinaryBitmap::crop(int, int, int, int) in libZXingWidget.a(BinaryBitmap.o)
      zxing::BinaryBitmap::rotateCounterClockwise() in libZXingWidget.a(BinaryBitmap.o)
      zxing::Counted::~Counted() in libZXingWidget.a(BinaryBitmap.o)
      zxing::BitArray::~BitArray() in libZXingWidget.a(BitArray.o)
      ...
    "___cxa_allocate_exception", referenced from:
      zxing::Counted::release() in libZXingWidget.a(Binarizer.o)
      zxing::Counted::release() in libZXingWidget.a(BinaryBitmap.o)
      zxing::BitArray::setRange(int, int) in libZXingWidget.a(BitArray.o)
      zxing::BitArray::isRange(unsigned long, unsigned long, bool) in libZXingWidget.a(BitArray.o)
      zxing::BitMatrix::setRegion(unsigned long, unsigned long, unsigned long, unsigned long) in libZXingWidget.a(BitMatrix.o)
      zxing::Counted::release() in libZXingWidget.a(BitMatrix.o)
      zxing::BitSource::readBits(int) in libZXingWidget.a(BitSource.o)
      ...
    
    架构i386的未定义符号: “std::ios_base::Init::Init()”,引用自: ___libZXingWidget.a(Binarizer.o)中的cxx_global_var_init ___libZXingWidget.a(BinaryBitmap.o)中的cxx_global_var_init ___libZXingWidget.a(Array.o)中的cxx_global_var_init ___libZXingWidget.a(BitArray.o)中的cxx_global_var_init ___libZXingWidget.a(BitMatrix.o)中的cxx_global_var_init ___libZXingWidget.a(BitSource.o)中的cxx_global_var_init ___libZXingWidget.a(Counted.o)中的cxx_global_var_init ... “std::terminate()”,引用自: libZXingWidget.a(Binarizer.o)中的zxing::Binarizer::Binarizer(zxing::Ref) libZXingWidget.a(Binarizer.o)中的Binarizer::~Binarizer() libZXingWidget.a(BinaryBitmap.o)中的zxing::BinaryBitmap::BinaryBitmap(zxing::Ref) libZXingWidget.a(BinaryBitmap.o)中的zxing::BinaryBitmap::~BinaryBitmap() libZXingWidget.a(BinaryBitmap.o)中的zxing::BinaryBitmap::getBlackRow(int,zxing::Ref) libZXingWidget.a(BinaryBitmap.o)中的zxing::BinaryBitmap::getWidth()常量 libZXingWidget.a(BinaryBitmap.o)中的zxing::BinaryBitmap::getHeight()常量 ... “运算符删除(void*)”,引用自: libZXingWidget.a(Binarizer.o)中的Binarizer::~Binarizer() libZXingWidget.a(Binarizer.o)中的zxing::Counted::~Counted() libZXingWidget.a(BinaryBitmap.o)中的zxing::BinaryBitmap::~BinaryBitmap() libZXingWidget.a(binarybamimp.o)中的裁剪(int,int,int,int) libZXingWidget.a(BinaryBitmap.o)中的zxing::BinaryBitmap::rotateCounterClockwise() zxing::Counted::~Counted()在libZXingWidget.a(BinaryBitmap.o)中 libZXingWidget.a(BitArray.o)中的zxing::BitArray::~BitArray() ... “\uuuuuuuucxa\u分配\u异常”,引用自: libZXingWidget.a(Binarizer.o)中的zxing::Counted::release() libZXingWidget.a(BinaryBitmap.o)中的zxing::Counted::release() libZXingWidget.a(BitArray.o)中的zxing::BitArray::setRange(int,int) libZXingWidget.a(BitArray.o)中的zxing::BitArray::isRange(unsigned long、unsigned long、bool) libZXingWidget.a(BitMatrix.o)中的zxing::BitMatrix::setRegion(无符号长、无符号长、无符号长、无符号长) libZXingWidget.a(BitMatrix.o)中的zxing::Counted::release() libZXingWidget.a(BitSource.o)中的zxing::BitSource::readBits(int) ...
    您需要将
    main.m
    重命名为
    main.mm
    。这将告诉XCODE与必要的C++库链接,这就是丢失的。

    LBZZWIGWITHOPEGET。在我的“链接二进制二进制文件”中,A是红色的。这是什么意思?我不注意颜色。我认为它应该表示指定的文件是否存在,但对于链接的项目,它似乎不一致,也不重要。@Orange表示找不到该文件或链接不正确。是的,我终于可以在我的应用程序中运行ZxingWidgetController了。一切似乎都很好。但是libZXingWidget的“用二进制文件链接二进制文件”中的字段仍然是红色的。我的另一个图书馆是红色的,但现在是黑色的。谢谢!现在可以了。但我在另一个纯obj-c文件中发现了编译器错误,该文件使用“namespace”作为变量(这是c++中的一个关键字)。这是正常的,或者我只是编辑了一些错误。您不能在任何C++相关的名称空间中使用命名空间(变量或类型):< <代码> .mm <代码>文件,或者在<代码> .h <代码>文件中包含在<代码> .mm. <代码>文件中(直接或不)。我强烈建议不要在你的目标C中使用任何C++保留的单词(命名空间、模板等)。