代码之家  ›  专栏  ›  技术社区  ›  Ian Turner

构建期间与核心图链接时出错

  •  3
  • Ian Turner  · 技术社区  · 15 年前

    我刚刚根据教程向我的应用程序添加了一个核心绘图视图( http://www.switchonthecode.com/tutorials/using-core-plot-in-an-iphone-application )我已经将核心绘图代码放在窗口控制器的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中的文本指针@uuuuobjc@uuuucls\u refs@cpplotrange

    “_cpdecimafromfloat”,引用自: -histogramwindowcontroller windowdidload]在histogramwindowcontroller.o中 -histogramwindowcontroller windowdidload]在histogramwindowcontroller.o中 -histogramwindowcontroller windowdidload]在histogramwindowcontroller.o中 -histogramwindowcontroller windowdidload]在histogramwindowcontroller.o中

    “.objc_class_name_cplinestyle”,引用自: HistogramWindowController.o中的文本指针@uuuuobjc@uuuucls\u refs@cplinestyle

    “.objc_class_name_cpxygraph”,引用自: HistogramWindowController.o中的文本指针@uuuuobjc@uuuucls\u refs@cpxygraph

    “.objc_class_name_cpscatterplot”,引用自: HistogramWindowController.o中的文本指针@uuuobjc@uuuucls\u refs@cpscatterplot

    “.objc_class_name_cpplotsymbol”,引用自: HistogramWindowController.o中的文本指针@uuuobjc@uuucls\u refs@cpplotsymbol

    “.objc_class_name_cpcolor”,引用自: HistogramWindowController.o中的文本指针@uuuuobjc@uuuucls\u refs@cpcolor

    “.objc_class_name_cpfill”,引用自: 文本指针@uuuobjc@uuuu cls_refs@cpfill in histogramwindowcontroller.o

    ld:未找到符号 Collect2:ld返回1退出状态

    我从未遇到过这样的错误。有人能解释一下问题可能是什么吗?

    干杯

    5 回复  |  直到 13 年前
        1
  •  3
  •   Dave DeLong    15 年前

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

        2
  •  1
  •   Brad Larson Code Synthesis    15 年前

    有一些说明 this wiki page 用于将框架合并到Mac项目中。如果遵循这些规则,您应该能够避免框架中链接的任何问题。

        3
  •  1
  •   gstrobl    13 年前

    我也经历过同样的链接错误。对我来说,问题是我试图在模拟器中运行我的应用程序。我不知道我是否错过了什么,但我只能在设备上运行。一旦我开始这样做,就没有链接错误。

        4
  •  0
  •   Peter Hosey    15 年前

    您还可以检查应用程序目标是否设置为包括64位支持,以及框架是否具有此类支持(使用 file(1) 后一部分的命令)。如果您正在使用64位支持构建应用程序,但尝试根据不支持64位的框架进行链接,则当链接器尝试链接应用程序的64位部分时,它将抛出类似这样的错误,而32位部分将成功。

        5
  •  0
  •   Ayrad    13 年前

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