Я пытаюсь включить код мировой магнитной модели, написанный на C, в приложение iOS. Он включает в себя файл заголовка 8.5M, который определяет массив с плавающей точкой с большим количеством элементов. Если я включаю его как есть, я получаю ошибки компоновщика о повторяющихся объектах, вероятно, потому, что заголовок включен несколько раз разными единицами компиляции, а массив float определен в файле заголовка. Это несколько ожидалось.Большой файл заголовка данных в приложении iOS
Я пробовал разделить это на h-файл и файл c и объявить массив float как extern, но это не сработало.
Любые идеи о том, как решить эту проблему с минимальными изменениями в WMM-коде?
Благодаря
EDIT: Это, как я пытался разбить файлы до:
// EGM9615.h file
extern float GeoidHeightBuffer[];
// EGM9615.c file
#include "EGM9615.h"
float GeoidHeightBuffer[] =
{1.2, 1.2, // lots more
};
Это приводит к ошибкам компоновщика еще:
Undefined symbols for architecture armv7:
"__Z29WMM_TimelyModifyMagneticModel12WMMtype_DateP21WMMtype_MagneticModelS1_", referenced from: -[Waypoint magneticVariation] in Waypoint.o "__Z23WMM_GeodeticToSpherical17WMMtype_Ellipsoid21WMMtype_CoordGeodeticP22WMMtype_CoordSpherical", referenced from: -[Waypoint magneticVariation] in Waypoint.o "__Z26WMM_CalculateGridVariation21WMMtype_CoordGeodeticP27WMMtype_GeoMagneticElements", referenced from: -[Waypoint magneticVariation] in Waypoint.o "__Z10WMM_Geomag17WMMtype_Ellipsoid22WMMtype_CoordSpherical21WMMtype_CoordGeodeticP21WMMtype_MagneticModelP27WMMtype_GeoMagneticElements", referenced from: -[Waypoint magneticVariation] in Waypoint.o "__Z23WMM_AllocateModelMemoryi", referenced from: -[Waypoint magneticVariation] in Waypoint.o "__Z22WMM_GeomagIntroductionP21WMMtype_MagneticModelPc", referenced from: -[Waypoint magneticVariation] in Waypoint.o "__Z23WMM_robustReadMagModelsPcPP21WMMtype_MagneticModeli", referenced from: -[Waypoint magneticVariation] in Waypoint.o "__Z9WMM_Errori", referenced from: -[Waypoint magneticVariation] in Waypoint.o "__Z15WMM_SetDefaultsP17WMMtype_EllipsoidP21WMMtype_MagneticModelP13WMMtype_Geoid", referenced from: -[Waypoint magneticVariation] in Waypoint.o ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)
Просьба указать, какие ошибки возникли при изъятии данных из файла C. Это правильный путь. –