我试图对使用ZXing扫描条形码的现有iPhone应用程序进行一些小改动,我需要一些帮助。我整天都在搜索,试图解决这个问题,没有运气。
自从我们上次更新此应用以来,已经有很多次卫星(超过一年)。它是我们需要继续为一个客户服务的旧版本,但对于其他客户,我已经使用Xamarin创建了一个适用于Android和iOS的跨平台应用程序(和WP 8,尽管没有人还在使用那个)。因此,我们拥有的单个Mac用于创建应用程序,现在我们用来编译我们的Xamarin版本已经更新为使用XCode 4.6.2。
当我对代码进行更改并尝试重建时,我遇到了几个错误,我在SO上找到帮助后修复了这些错误。现在我收到一些错误,SO上的答案都无法解决。
以下是我遇到的错误:
Undefined symbols for architecture armv7:
"zxing::common::StringUtils::SHIFT_JIS", referenced from:
zxing::qrcode::DecodedBitStreamParser::decodeKanjiSegment(zxing::Ref<zxing::BitSource>, std::string&, int) in libZXingWidget.a(DecodedBitStreamParser-64E27B33E79CBC52.o)
"zxing::common::StringUtils::GB2312", referenced from:
zxing::qrcode::DecodedBitStreamParser::decodeHanziSegment(zxing::Ref<zxing::BitSource>, std::string&, int) in libZXingWidget.a(DecodedBitStreamParser-64E27B33E79CBC52.o)
"zxing::common::StringUtils::ASCII", referenced from:
zxing::qrcode::DecodedBitStreamParser::decodeNumericSegment(zxing::Ref<zxing::BitSource>, std::string&, int) in libZXingWidget.a(DecodedBitStreamParser-64E27B33E79CBC52.o)
zxing::qrcode::DecodedBitStreamParser::decodeAlphanumericSegment(zxing::Ref<zxing::BitSource>, std::string&, int, bool) in libZXingWidget.a(DecodedBitStreamParser-64E27B33E79CBC52.o)
"zxing::WhiteRectangleDetector::detect()", referenced from:
zxing::datamatrix::Detector::detect() in libZXingWidget.a(Detector-9FC86B67C0CBCF52.o)
"zxing::common::StringUtils::UTF8", referenced from:
zxing::qrcode::DecodedBitStreamParser::append(std::string&, unsigned char const*, unsigned long, char const*) in libZXingWidget.a(DecodedBitStreamParser-64E27B33E79CBC52.o)
"zxing::common::StringUtils::guessEncoding(unsigned char*, int, std::map<unsigned int, std::string, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::string> > > const&)", referenced from:
zxing::qrcode::DecodedBitStreamParser::decodeByteSegment(zxing::Ref<zxing::BitSource>, std::string&, int, zxing::common::CharacterSetECI*, zxing::ArrayRef<zxing::ArrayRef<unsigned char> >&, std::map<unsigned int, std::string, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::string> > > const&) in libZXingWidget.a(DecodedBitStreamParser-64E27B33E79CBC52.o)
如您所见,错误都在zxing命名空间中。我可以加载ZXingWidget项目并构建它没有任何错误,但我的项目包括它不会链接到zxing核心的东西。我尝试过切换C ++编译器,标准库,语言方言等。
此时我将采取两种解决方案中的任何一种:
答案 0 :(得分:0)
我能够修复我的构建。 ZXingWidget项目引用cpp文件夹中的文件,该文件夹位于与我的主项目相同级别的文件夹中。这就是ZXing文档所说的那样(并且它在我升级XCode之前就已经开始工作了),尽管它对我来说没有任何意义。所以文件夹看起来像这样:
在项目中包含ZXingWidget的说明告诉您将../../cpp/core/src添加到搜索的标题中。链接器抱怨的文件都在那里,所以我手动将链接器所抱怨的每个文件添加到ZXingWidget项目目标中的编译源。
之后我只有一个链接器错误,我通过更改主项目上的部署目标并将其目标从3.0修改为5.1.1来修复(我会将其设置为4.3,但它表示armv64架构至少有5.1.1 - 不知道我是否需要这种架构,但无论如何。