Я пытаюсь включить код World Magnetic Model, написанный на C, в приложение для iOS. Он включает заголовочный файл 8.5M, который определяет массив с большим количеством элементов. Если я включаю его как есть, я получаю ошибки компоновщика о дублированных объектах, возможно, потому, что заголовок включается более одного раза различными модулями компиляции, а массив float определяется в заголовочном файле. Это несколько ожидаемо.
Я попытался разбить это на файл h и файл c и объявить массив float как внешний, но это не сработало.
Есть идеи, как решить эту проблему с минимальным количеством модификаций кода WMM?
Спасибо
РЕДАКТИРОВАТЬ: Вот как я пытался разделить файлы:
// EGM9615.h file
extern float GeoidHeightBuffer[];
// EGM9615.c file
#include "EGM9615.h"
float GeoidHeightBuffer[] =
{1.2, 1.2, // lots more
};
Это приводит к ошибкам компоновщика:
Неопределенные символы для архитектуры armv7:
"__Z29WMM_TimelyModifyMagneticModel12WMMtype_DateP21WMMtype_MagneticModelS1_",
ссылка от:
- [Магнитная вариация путевой точки] в Waypoint.o "__Z23WMM_GeodeticToSpherical17WMMtype_Ellipsoid21WMMtype_CoordGeodeticP22WMMtype_CoordSpherical",
ссылка от:
- [Магнитная вариация путевой точки] в Waypoint.o "__Z26WMM_CalculateGridVariation21WMMtype_CoordGeodeticP27WMMtype_GeoMagneticElements",
ссылка от:
- [Магнитная вариация путевой точки] в Waypoint.o "__Z10WMM_Geomag17WMMtype_Ellipsoid22WMMtype_CoordSpherical21WMMtype_CoordGeodeticP21WMMtype_MagneticModelP27WMMtype_GeoMagneticElements от:"
- [Магнитная вариация путевой точки] в Waypoint.o "__Z23WMM_AllocateModelMemoryi", на которую ссылаются из:
- [Магнитная вариация путевой точки] в Waypoint.o "__Z22WMM_GeomagIntroductionP21WMMtype_MagneticModelPc", ссылка
от:
- [Магнитная вариация путевой точки] в Waypoint.o "__Z23WMM_robustReadMagModelsPcPP21WMMtype_MagneticModeli", ссылка
от:
- [Магнитная вариация путевой точки] в Waypoint.o "__Z9WMM_Errori", на которую ссылаются из:
- [Магнитная вариация путевой точки] в Waypoint.o "__Z15WMM_SetDefaultsP17WMMtype_EllipsoidP21WMMtype_MagneticModelP13WMMtype_Geoid",
ссылка от:
- [Магнитная вариация путевой точки] в Waypoint.o ld: символ (ы) не найден для архитектуры armv7 clang: error: сбой команды компоновщика с
код выхода 1 (используйте -v для просмотра вызова)