Ошибки при связывании во время сборки с Core Plot
Вопрос
Я только что добавил представление основного графика в свое приложение на основе руководства (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", ссылка на:literal-pointer@__OBJC@__cls_refs@CPPlotRange в HistogramWindowController.o
"_CPDecimalFromFloat", ссылка на:-[HistogramWindowController windowDidLoad] in HistogramWindowController.o -[HistogramWindowController windowDidLoad] in HistogramWindowController.o -[HistogramWindowController windowDidLoad] in HistogramWindowController.o -[HistogramWindowController windowDidLoad] in HistogramWindowController.o
".objc_class_name_CPLineStyle", ссылка на:literal-pointer@__OBJC@__cls_refs@CPLineStyle в HistogramWindowController.o
".objc_class_name_CPXYGraph", ссылка на который:literal-pointer@__OBJC@__cls_refs@CPXYGraph в HistogramWindowController.o
".objc_class_name_CPScatterPlot", ссылка на:literal-pointer@__OBJC@__cls_refs@CPScatterPlot в HistogramWindowController.o
".objc_class_name_CPPlotSymbol", ссылка на:literal-pointer@__OBJC@__cls_refs@CPPlotSymbol в HistogramWindowController.o
".objc_class_name_CPColor", ссылка на:literal-pointer@__OBJC@__cls_refs@CPColor в HistogramWindowController.o
".objc_class_name_CPFill", ссылка на который:literal-pointer@__OBJC@__cls_refs@CPFill в HistogramWindowController.o
лд:Символ (ы) не найдено collect2:ld вернул 1 статус выхода
Я никогда не сталкивался с такой ошибкой.Может ли кто-нибудь пролить свет на то, в чем может быть проблема?
Ваше здоровье
Решение
Это означает, что вы не связаны в рамках правильно. Вы, вероятно, только что добавили структуру в свой проект, #import
Эд заголовок, но забыл убедиться, что фреймворк фактически связана с вашей целью.
Другие советы
Есть несколько инструкций по эта страница вики для включения структуры в проекты Mac. Если вы следите за этим, вы сможете избежать каких -либо проблем с связыванием в рамках.
Я испытал те же ошибки ссылки. Для меня проблема заключалась в том, что я пытался запустить свое приложение в симуляторе. Я не знаю, если я что -то пропустил, но я мог бы запустить только на устройстве. Как только я начал это делать, никаких ошибок ссылок.
Вы также можете проверить, настроена ли цель вашего приложения на включение 64-разрядной поддержки и имеет ли платформа такую поддержку (используйте файл(1) команда для последней части).Если вы создаете свое приложение с поддержкой 64-разрядной версии, но пытаетесь связать ее с платформой, которая не имеет поддержки 64-разрядной версии, компоновщик выдаст подобные ошибки, когда попытается связать 64-разрядную часть вашего приложения. , а 32-битные части будут успешными.
Убедитесь, что вы также добавите каркас Quarzcore. Это исправило мои ошибки связывания.