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 编译,可能是模拟器?也尝试为 i386 编译 Coreplot。

对于 /Users/a/Desktop/a 问题,也许您在链接阶段错误地包含了该文件?进入您的项目设置,然后“构建阶段”,最后查看“将二进制文件与库链接”。

于 2012-08-26T04:08:41.060 回答
1

我遇到了同样的问题,这就是我解决的方法。

步骤 1. 右键单击​​您的文件夹->将文件添加到“ProjectName”->确保选择将文件复制到同一个项目。

第 2 步。现在转到 Targets-->Build Phases--> Link Binary With Libraries 在这里,您将看到为特定 3rd 方库添加的二进制文件,例如 For CorePlot libCorePlot-CocoaTouch.a 但它通常没有正确链接它是使用时复制到同一目录中(将文件添加到“您的项目名称”),但这些未正确链接,因此通过选择并使用 (-) 符号将其删除。现在使用 (+) 符号再次添加二进制,例如在 CorePlot 的情况下使用
libCorePlot-CocoaTouch.a

所以构建你的项目,你就完成了。就我而言,这帮助我解决了我的问题。

但是,由于 64 位和 32 位架构,总是存在问题,您可以在文档中学习 有关 64/32 位相关设置的苹果文档

于 2014-03-20T12:46:00.773 回答
0

我以这种方式解决了这个问题:

Xcode 4.6

第一的

目标>构建阶段>目标依赖项:添加“CorePlot-CocoaTouch”

第二

将二进制文件与库链接:添加“libCorePlot-CocoaTouch.a”

于 2013-10-14T03:20:26.547 回答