2011-03-23 45 views
0

當我使用模擬器 - >發佈配置代碼運行正常。但是,如果使用模擬器 - > Debug配置是給我下面的錯誤iPhone: - 使用內聯函數: - 使用調試配置時顯示錯誤

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) ; 
} 

感謝。

回答

0

感謝xj1200。他的鏈接真的很有幫助。我所做的只是在內聯之前添加「靜態」修飾符。這是新的代碼,它工作正常。

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) ; 
}