4

Core Plot フレームワークを使用するアプリをビルドすると、次のリンカー エラーが表示されます。

ld: warning: ignoring file /Users/a/Desktop/a
7-31-12 10.57 AM/usr/local/lib/libCorePlot-CocoaTouch.a, missing
required architecture i386 in file
/Users/a/Desktop/a 7-31-12 10.57
AM/usr/local/lib/libCorePlot-CocoaTouch.a (2 slices) Undefined symbols
for architecture i386:   "_CPTDecimalFromFloat", referenced from:
       -[CPTTestAppScatterPlotController viewDidLoad] in CPTTestAppScatterPlotController.o
       -[CPTTestAppScatterPlotController changePlotRange] in CPTTestAppScatterPlotController.o
       -[StatsVC CallBarChart] in StatsVC.o   "_CPTDecimalFromInt", referenced from:
       -[StatsVC CallBarChart] in StatsVC.o
       -[StatsVC CallScatterChart] in StatsVC.o   "_CPTDecimalFromString", referenced from:
       -[CPTTestAppScatterPlotController viewDidLoad] in CPTTestAppScatterPlotController.o
       -[StatsVC CallBarChart] in StatsVC.o
       -[StatsVC CallScatterChart] in StatsVC.o   "_OBJC_CLASS_$_CPTAxisLabel", referenced from:
       objc-class-ref in StatsVC.o   "_OBJC_CLASS_$_CPTBarPlot", referenced from:
       objc-class-ref in StatsVC.o   "_OBJC_CLASS_$_CPTColor", referenced from:
       objc-class-ref in CPTTestAppScatterPlotController.o
       objc-class-ref in StatsVC.o   "_OBJC_CLASS_$_CPTConstraints", referenced from:
       objc-class-ref in StatsVC.o   "_OBJC_CLASS_$_CPTFill", referenced from:
       objc-class-ref in CPTTestAppScatterPlotController.o
       objc-class-ref in StatsVC.o   "_OBJC_CLASS_$_CPTGradient", referenced from:
       objc-class-ref in CPTTestAppScatterPlotController.o
       objc-class-ref in StatsVC.o   "_OBJC_CLASS_$_CPTGraphHostingView", referenced from:
       objc-class-ref in StatsVC.o   "_OBJC_CLASS_$_CPTMutableLineStyle", referenced from:
       objc-class-ref in CPTTestAppScatterPlotController.o
       objc-class-ref in StatsVC.o   "_OBJC_CLASS_$_CPTPlotRange", referenced from:
       objc-class-ref in CPTTestAppScatterPlotController.o
       objc-class-ref in StatsVC.o   "_OBJC_CLASS_$_CPTPlotSymbol", referenced from:
       objc-class-ref in CPTTestAppScatterPlotController.o   "_OBJC_CLASS_$_CPTScatterPlot", referenced from:
       objc-class-ref in CPTTestAppScatterPlotController.o
       objc-class-ref in StatsVC.o   "_OBJC_CLASS_$_CPTTextStyle", referenced from:
       objc-class-ref in StatsVC.o   "_OBJC_CLASS_$_CPTTheme", referenced from:
       objc-class-ref in CPTTestAppScatterPlotController.o
       objc-class-ref in StatsVC.o   "_OBJC_CLASS_$_CPTXYGraph", referenced from:
       objc-class-ref in CPTTestAppScatterPlotController.o
       objc-class-ref in StatsVC.o   "_kCPTDarkGradientTheme", referenced from:
       -[CPTTestAppScatterPlotController viewDidLoad] in CPTTestAppScatterPlotController.o
       -[StatsVC CallScatterChart] in StatsVC.o
       -[CPTTestAppScatterPlotController viewDidLoad] in CPTTestAppScatterPlotController.o
       -[StatsVC CallScatterChart] in StatsVC.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit
 code 1 (use -v to see invocation)

coreplot を適切にリンクしようとしましたが、アーキテクチャを armv6、armv7 などに変更しました...しかし、3 日からこの問題に直面しています

ここでの問題は何ですか?

4

3 に答える 3

2

Coreplot はデバイス (つまり、arm6/7 アーキテクチャ) で実行するように構築されているように見えますが、i386 (おそらくシミュレーター) 用にコンパイルしようとしていますか? Coreplot を i386 用にコンパイルしてみてください。

/Users/a/Desktop/a の問題については、リンク フェーズでそのファイルを誤って含めた可能性がありますか? プロジェクト設定に移動し、次に「ビルドフェーズ」に移動し、最後に「ライブラリとバイナリをリンク」の下を見てください。

于 2012-08-26T04:08:41.060 に答える
1

私は同じ問題を解決しました。

ステップ 1. フォルダーを右クリック --> [ファイルを "ProjectName" に追加] --> [ファイルを同じプロジェクトにコピー] を選択してください。

ステップ 2. 次に、Targets-->Build Phases-> Link Binary With Libraries に移動します。ここで、For CorePlot libCorePlot-CocoaTouch.a などの特定のサードパーティ ライブラリ用に追加されたバイナリ ファイルが表示されますが、通常は適切にリンクされていません。 (Add Files To "Your ProjectName") を使用したときに同じディレクトリにコピーされましたが、これらは適切にリンクされていないため、(-) 記号を選択して使用して削除します。(+) 記号を使用して、CorePlot の場合のように再度バイナリを追加します
libCorePlot-CocoaTouch.aを使用します

プロジェクトをビルドすれば完了です。私の場合、これは私の問題を解決するのに役立ちました。

ただし、64 ビットおよび 32 ビットのアーキテクチャが原因で常に問題が発生します。64 /32 ビットに関連する設定については、こちらのドキュメント Apple ドキュメントで学習できます。

于 2014-03-20T12:46:00.773 に答える
0

私はこの方法で問題を解決しました:

クロスコード 4.6

最初

TARGETS>Build Phases>Target Dependencies: 「CorePlot-CocoaTouch」を追加

2番目

バイナリをライブラリにリンク: 「libCorePlot-CocoaTouch.a」を追加

于 2013-10-14T03:20:26.547 に答える