2012-10-09 63 views
3

我知道有很多類似的問題,我一點沒發現我的情況:獲得「爲i386硬件架構未定義的符號:」試圖讓常量

我:

#import <Foundation/Foundation.h> 

@interface BSConstants : NSObject 

extern NSString* const DB_COLUMN_NAME; 
extern NSString* const DB_COLUMN_PRICE; 
extern NSString* const DB_COLUMN_DESCRIPTION; 
extern NSString* const DB_COLUMN_ICON;  
extern NSString* const DB_COLUMN_IMAGE; 

@end 

#import "BSConstants.h" 

@implementation BSConstants 

NSString* const DB_COLUMN_NAME    = @"name"; 
NSString* const DB_COLUMN_PRICE    = @"price"; 
NSString* const DB_COLUMN_DESCRIPTION  = @"description"; 
NSString* const DB_COLUMN_ICON    = @"icon"; 
NSString* const DB_COLUMN_IMAGE    = @"image"; 

@end 

我當我嘗試建立我的項目 - 我得到:

Undefined symbols for architecture i386: 
    "_CONST_SHOPPING_CART_PURCHASE_MAX_SIZE", referenced from: 
     -[BSShoppingCartViewController onBuyButtonPressed:] in BSShoppingCartViewController.o 
    "_NAME_CREATED_FILE", referenced from: 
     -[BSImageSaver saveImageAsPng:] in BSImageSaver.o 
    "_NAME_DOWNLOADS_FOLDER", referenced from: 
     -[BSImageSaver saveImageAsPng:] in BSImageSaver.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

嘗試訪問:

#import "BSConstants.h" 

... DB_COLUMN_NAME 
+1

你如何訪問這些常量? –

+2

我發現了錯誤 - 我在.h和.m文件中有不同的常量名。感謝所有。 – pvllnspk

+0

如果您發現問題,請將其作爲答案張貼並檢查。已經檢查的答案不正確。 –

回答

9

我發現了錯誤 - 我在.h和.m文件中有不同的常量名。

+0

我有完全相同的問題。 – Hendrix

1

首先嚐試改變這種

extern NSString* const DB_COLUMN_NAME;extern const NSString* DB_COLUMN_NAME;

同樣與

NSString* const DB_COLUMN_NAME    = @"name"; 

常量的NSString * DB_COLUMN_NAME = @ 「名」;

另請參閱您如何訪問這些內容。

+0

仍然是同樣的問題 – pvllnspk

+0

我發現錯誤 - 我有不同的常量名稱.h和.m文件。感謝所有。 – pvllnspk

+0

應將BSConstants.m添加到應用程序的目標中,以便它可以鏈接。 –

相關問題