我刚刚根据教程(http://www.switchonthecode.com/tutorials/using-core-plot-in-an-iphone-application)向我的应用程序添加了Core Plot视图。我已将Core Plot绘图代码放在窗口控制器的windowDidLoad方法中,用于我已包含CPLayerHostingView的窗口。该图的代码是:
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”,引自: HistogramWindowController.o中的文字指针@__ OBJC @__ cls_refs @ CPPlotRange
“_ CPDecimalFromFloat”,引自: - HistogramWindowController.o中的[HistogramWindowController windowDidLoad] - HistogramWindowController.o中的[HistogramWindowController windowDidLoad] - HistogramWindowController.o中的[HistogramWindowController windowDidLoad] - HistogramWindowController.o中的[HistogramWindowController windowDidLoad]
“。objc_class_name_CPLineStyle”,引自: HistogramWindowController.o中的文字指针@__ OBJC @__ cls_refs @CPLineStyle
“。objc_class_name_CPXYGraph”,引自: HistogramWindowController.o中的文字指针@__ OBJC @__ cls_refs @ CPXYGraph
“。objc_class_name_CPScatterPlot”,引自: HistogramWindowController.o中的文字指针@__ OBJC @__ cls_refs @ CPScatterPlot
“。objc_class_name_CPPlotSymbol”,引自: HistogramWindowController.o中的文字指针@__ OBJC @__ cls_refs @ CPPlotSymbol
“。objc_class_name_CPColor”,引自: 文字指针@__ OBJC @__ cls_refs @ CPColor in HistogramWindowController.o
“。objc_class_name_CPFill”,引自: 文字指针@__ OBJC @__ cls_refs @FfFill in HistogramWindowController.o
ld:找不到符号 collect2:ld返回1退出状态
我从未遇到过这样的错误。任何人都可以解释问题可能是什么?
干杯
答案 0 :(得分:3)
这意味着您没有正确链接到框架中。您可能刚刚将框架添加到项目中,#import
标题,但忘记确保框架实际上已链接到目标。
答案 1 :(得分:1)
this wiki page上有一些说明可以将框架合并到Mac项目中。如果你遵循这些,你应该能够避免在框架中链接的任何问题。
答案 2 :(得分:1)
我遇到了完全相同的链接错误。对我来说,问题是我试图在模拟器中运行我的应用程序。我不知道我是否遗漏了某些地方,但我只能在设备上运行。一旦我开始这样做,没有链接错误。
答案 3 :(得分:0)
您还可以检查您的应用程序目标是否设置为包含64位支持以及框架是否具有此类支持(对后一部分使用file(1)命令)。如果您正在使用64位支持构建应用程序,但尝试链接到没有64位支持的框架,链接器会在尝试链接应用程序的64位部分时抛出错误,而32位部分将成功。
答案 4 :(得分:0)
确保您也添加了QuarzCore框架。这解决了我的链接错误。