使用Core Plot构建期间链接错误

时间:2009-09-04 04:31:33

标签: cocoa xcode linker core-plot

我刚刚根据教程(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退出状态

我从未遇到过这样的错误。任何人都可以解释问题可能是什么?

干杯

5 个答案:

答案 0 :(得分:3)

这意味着您没有正确链接到框架中。您可能刚刚将框架添加到项目中,#import标题,但忘记确保框架实际上已链接到目标。

答案 1 :(得分:1)

this wiki page上有一些说明可以将框架合并到Mac项目中。如果你遵循这些,你应该能够避免在框架中链接的任何问题。

答案 2 :(得分:1)

我遇到了完全相同的链接错误。对我来说,问题是我试图在模拟器中运行我的应用程序。我不知道我是否遗漏了某些地方,但我只能在设备上运行。一旦我开始这样做,没有链接错误。

答案 3 :(得分:0)

您还可以检查您的应用程序目标是否设置为包含64位支持以及框架是否具有此类支持(对后一部分使用file(1)命令)。如果您正在使用64位支持构建应用程序,但尝试链接到没有64位支持的框架,链接器会在尝试链接应用程序的64位部分时抛出错误,而32位部分将成功。

答案 4 :(得分:0)

确保您也添加了QuarzCore框架。这解决了我的链接错误。