iPhone: - Использование встроенной функции: - показывает ошибку при использовании конфигурации отладки - PullRequest
0 голосов
/ 23 марта 2011

когда я использую Simulator-> выпустить конфигурацию, код работает нормально. но если я использую Симулятор -> Конфигурация отладки дает мне следующую ошибку

Undefined symbols:
  "_AGTileInfoEqualToAGTile", referenced from:
      -[TiledScrollView loadTileAtPoint:] in TiledScrollView.o
  "_AGTileInfoMake", referenced from:
      -[TiledScrollView loadTilesIfNeeded] in TiledScrollView.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

Вот код

typedef struct 
{
    NSString *dataSet;
    NSInteger level;
    NSInteger x;
    NSInteger y;


}AGTileInfo;


/* Make a AGTileInfo  */
inline AGTileInfo AGTileInfoMake(NSString *dataSet, NSInteger level, NSInteger x, NSInteger y);

inline AGTileInfo
AGTileInfoMake(NSString *dataSet, NSInteger level, NSInteger x, NSInteger y)
{
    AGTileInfo tInfo;   tInfo.dataSet = dataSet;    tInfo.level = level;    tInfo.x = x;    tInfo.y = y;    return tInfo;
}



inline bool AGTileInfoEqualToAGTile(AGTileInfo info1, AGTileInfo info2);

inline bool
AGTileInfoEqualToAGTile(AGTileInfo info1, AGTileInfo info2)
{
    return [info1.dataSet isEqualToString:info2.dataSet] && (info1.level==info2.level) && (info1.x == info2.x) && (info1.y == info2.y) ;
}

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 23 марта 2011

Вы пытались компилировать без предложения "inline"?

Посмотрите на это: Цель C: встроенная функция - символ не найден

0 голосов
/ 27 марта 2011

Благодаря xj1200.Его ссылка была действительно полезной.Все, что я сделал, это добавил модификатор «static» перед встроеннымВот новый код, и он работает нормально.

static inline AGTileInfo AGTileInfoMake(NSString *dataSet, NSInteger level, NSInteger x, NSInteger y);

static inline AGTileInfo
AGTileInfoMake(NSString *dataSet, NSInteger level, NSInteger x, NSInteger y)
{
    AGTileInfo tInfo;   tInfo.dataSet = dataSet;    tInfo.level = level;    tInfo.x = x;    tInfo.y = y;    return tInfo;
}


static inline bool AGTileInfoEqualToAGTile(AGTileInfo info1, AGTileInfo info2);

static inline bool
AGTileInfoEqualToAGTile(AGTileInfo info1, AGTileInfo info2)
{
    return [info1.dataSet isEqualToString:info2.dataSet] && (info1.level==info2.level) && (info1.x == info2.x) && (info1.y == info2.y) ;
}
...