3

チュートリアル ( http://www.switchonthecode.com/tutorials/using-core-plot-in-an-iphone-application )に基づいて、Core Plot ビューをアプリケーションに追加しました。CPLayerHostingView を含めたウィンドウのウィンドウ コントローラーの windowDidLoad メソッドに Core Plot 描画コードを配置しました。プロットのコードは次のとおりです。

CPXYPlotSpace *plotSpace = (CPXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.xRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(-6) 
                                               length:CPDecimalFromFloat(12)];
plotSpace.yRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(-5) 
                                               length:CPDecimalFromFloat(30)];

CPXYAxisSet *axisSet = (CPXYAxisSet *)graph.axisSet;

CPLineStyle *lineStyle = [CPLineStyle lineStyle];
lineStyle.lineColor = [CPColor blackColor];
lineStyle.lineWidth = 2.0f;

axisSet.xAxis.majorIntervalLength = [[NSDecimalNumber decimalNumberWithString:@"5"] decimalValue];  
axisSet.xAxis.minorTicksPerInterval = 4;
axisSet.xAxis.minorTicksPerInterval = 4;
axisSet.xAxis.majorTickLineStyle = lineStyle;
axisSet.xAxis.minorTickLineStyle = lineStyle;
axisSet.xAxis.axisLineStyle = lineStyle;
axisSet.xAxis.minorTickLength = 5.0f;
axisSet.xAxis.majorTickLength = 7.0f;
axisSet.xAxis.axisLabelOffset = 3.0f;

axisSet.yAxis.majorIntervalLength = [[NSDecimalNumber decimalNumberWithString:@"5"] decimalValue];  
axisSet.yAxis.minorTicksPerInterval = 4;
axisSet.yAxis.minorTicksPerInterval = 4;
axisSet.yAxis.majorTickLineStyle = lineStyle;
axisSet.yAxis.minorTickLineStyle = lineStyle;
axisSet.yAxis.axisLineStyle = lineStyle;
axisSet.yAxis.minorTickLength = 5.0f;
axisSet.yAxis.majorTickLength = 7.0f;
axisSet.yAxis.axisLabelOffset = 3.0f;

CPScatterPlot *xSquaredPlot = [[[CPScatterPlot alloc] 
                                initWithFrame:graph.defaultPlotSpace.bounds] autorelease];
xSquaredPlot.identifier = @"X Squared Plot";
xSquaredPlot.dataLineStyle.lineWidth = 1.0f;
xSquaredPlot.dataLineStyle.lineColor = [CPColor redColor];
xSquaredPlot.dataSource = self;
[graph addPlot:xSquaredPlot];

ビルドすると、次のエラーが発生します。

「.objc_class_name_CPPlotRange」、参照元:literal-pointer@__OBJC@__cls_refs@CPPlotRange in HistogramWindowController.o

「_CPDecimalFromFloat」、以下から参照: -[HistogramWindowController windowDidLoad] (HistogramWindowController.o) -[HistogramWindowController windowDidLoad] (HistogramWindowController.o) -[HistogramWindowController windowDidLoad] (HistogramWindowController.o) -[HistogramWindowController windowDidLoad] (HistogramWindowController.o)

「.objc_class_name_CPLineStyle」、参照元:literal-pointer@__OBJC@__cls_refs@CPLineStyle in HistogramWindowController.o

".objc_class_name_CPXYGraph"、参照元:literal-pointer@__OBJC@__cls_refs@CPXYGraph in HistogramWindowController.o

「.objc_class_name_CPScatterPlot」、参照元:literal-pointer@__OBJC@__cls_refs@CPScatterPlot in HistogramWindowController.o

「.objc_class_name_CPPlotSymbol」、参照先:literal-pointer@__OBJC@__cls_refs@CPPlotSymbol in HistogramWindowController.o

「.objc_class_name_CPColor」、参照先: HistogramWindowController.o のliteral-pointer@__OBJC@__cls_refs@CPColor

「.objc_class_name_CPFill」、参照先: HistogramWindowController.o のliteral-pointer@__OBJC@__cls_refs@CPFill

ld: シンボルが見つかりません collect2: ld は 1 つの終了ステータスを返しました

このようなエラーに遭遇したことはありません。問題が何であるかについて誰かが光を当てることができますか?

乾杯

4

5 に答える 5

3

フレームワークに正しくリンクしていないことを意味します。フレームワークをプロジェクトに追加し#import、ヘッダーを編集したばかりで、フレームワークが実際にターゲットにリンクされていることを確認するのを忘れている可能性があります。

于 2009-09-04T05:05:06.097 に答える
1

まったく同じリンク エラーが発生しました。私にとっての問題は、シミュレーターでアプリケーションを実行しようとしたことでした。どこかで何かを見逃したかどうかはわかりませんが、デバイスでしか実行できませんでした。私がそれを始めたら、リンクエラーはありません。

于 2011-03-21T01:05:48.297 に答える
1

この wiki ページには、フレームワークを Mac プロジェクトに組み込むための手順がいくつかあります。それらに従えば、フレームワーク内でのリンクに関する問題を回避できるはずです。

于 2009-09-06T18:06:58.900 に答える
0

また、アプリケーションターゲットが64ビットサポートを含むように設定されているかどうか、およびフレームワークがそのようなサポートを持っているかどうかを確認することもできます(後半のfile(1)コマンドを使用してください)。64ビットをサポートするアプリを構築しているが、64ビットをサポートしていないフレームワークに対してリンクしようとすると、リンカーがアプリの64ビット部分をリンクしようとすると、そのようなエラーがスローされます。 、32ビット部分は成功します。

于 2009-09-04T08:12:15.253 に答える
0

QuarzCore フレームワークも必ず追加してください。これにより、リンクエラーが修正されました。

于 2011-06-07T18:39:00.730 に答える