私がやろうとしていること
QR コード リーダー フレームワークであるZxingを iPhone プロジェクトに統合します。ここから ZXing sdk をチェックアウトしました。ScanTest という名前の ZXing に付属するサンプル プロジェクトを問題なく実行しました。しかし、ライブラリをプロジェクトに統合しようとすると、言及されたエラーが発生します。
プロジェクト仕様
- 対象OS:iOS 6.0
- 導入対象:iOS 5.0以上。
- テスト済み: iPhone 4 および iPhone 3GS。
- Xcode : Xcode 4.5.1
- ZXing バージョン: 2.0
問題
ビルドすると、 ZXing readme ファイルのすべての統合ステップを実行した後、次のようなビルド エラーが発生します。
Undefined symbols for architecture armv7:
"std::basic_ostream<char, std::char_traits<char> >& std::operator<<<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
zxing::qrcode::Detector::computeDimension(zxing::Ref<zxing::ResultPoint>, zxing::Ref<zxing::ResultPoint>, zxing::Ref<zxing::ResultPoint>, float) in libZXingWidget.a(Detector-B8B28E953F840D47.o)
Undefined symbols for architecture armv7:
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)", referenced from:
zxing::Exception::Exception(char const*) in libZXingWidget.a(Exception.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> > >
そのようなエラーが 27 あります。最初の 2 つだけをコピーしました。
わかったこと
まあ、私はこれ、これ、これ、これ、これ、これ、スタックオーバーフローのこのスレッドをすべて同じエラーメッセージで調べました。解決策はどれもうまくいきませんでした。
その後、ZXing フォーラムで同じ問題について話し合っているこのクローズド スレッドを見つけました。その議論から、いくつかの可能な解決策は(いくつかのために働いた)
最初のエラーは (おそらく) main.m の名前を main.mm に変更していないためです。2 番目のエラーは (おそらく) ウィジェット ライブラリに対してリンクしていないためです。
また、main.m の名前を変更し、ライブラリを追加したかどうかをクロス チェックして、確かに追加したことを確認しました。したがって、これは当てはまりません。
メイン プロジェクトに合わせてライブラリのアーキテクチャを「標準 (armv7、armv7s)」に変更した後、アプリを正常にコンパイルできました。
私のプロジェクト、ターゲット、ライブラリ プロジェクト (デバッグ、配布、リリース用) のアーキテクチャは として与えられStandard (armv7, armv7s)
ます。だから運もありません。
そして彼らはこう言って問題を締めくくった。
zxing プロジェクトが更新され、armv7s アーチが追加され、armv6 アーチが削除されました。これらの変更は、(1) armv7s である iPhone 5 用にビルドするために必要であり、(2) Xcode 4.5 には armv6 のサポートが含まれていないため、まったくビルドするためにも必要です。独自のプロジェクト ファイルがある場合は、これらの変更を自分で行う必要があります。これらは zxing に固有のものではない一般的な変更であるため、問題が発生した場合は、StackOverflow などの一般的なフォーラムでより多くの/より迅速なヘルプを得ることができます。
ここにいるのは、StackOverflow です。
もう1点
ZXing 統合README ファイルでは、統合の最初のステップは次のとおりです。
1) 「 」の下にある「ZXingWidget.xcodeproj」ファイルを見つけます
zxing/iphone/ZXingWidget/
。ZXingWidget.xcodeproj をドラッグし、Xcode プロジェクトの「グループとファイル」サイドバーのルートにドロップします。ダイアログが表示されます。[追加] をクリックする前に、[アイテムのコピー] がオフになっていること、[参照タイプ] が [プロジェクトに相対] になっていることを確認してください。または、プロジェクト ナビゲータを右クリックして、[ファイルを "MyProject" に追加] を選択することもできます。
ZXingWidget.xcodeproj ファイルをプロジェクトにドラッグしたとき、ダイアログが表示されませんでした。プロジェクトがプロジェクトに直接追加され、「アイテムのコピー」および「参照タイプ」プロパティを設定できませんでした。Xcode 4.5 の新機能なのかバグなのかわかりません。これは、README ファイルに従って正しく実行できなかった唯一の手順です。
さて、あなたは私が持っているすべての情報を持っています。私はこれを6時間修正しようとしています。何か案が?