Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_ATParams"

Hi,


I builded my app with xcode iOS8 under 32 bits architecture, it succeeded.

When I builded it under 64 bits architecture (armv7, arm64), it failed with the following message :


Undefined symbols for architecture x86_64:

"_OBJC_CLASS_$_ATParams", referenced from:

objc-class-ref in Tagger.o

ld: symbol(s) not found for architecture x86_64


What would I have to add to make it build in x86_64 architecture?

Any suggestion would be welcome.

Thank you.

Patrick

Hi! ..is ATParams part of a framework you link with?


I had a similar issue, I see no reason why symbols would become hidden, I found a workaround that works but isn't ideal : adding -fvisibility=default to the files which symbols are not found. You do that in the "Compile Sources" phases of Build Phases. (Compiler flags per file). If you have too many files that are touched by this issue, even less ideal, you could change globally the setting "Symbols Hidden By Default" to NO.


My issue was this one: https://forums.developer.apple.com/thread/22194

Usually stuff like this means you have a class or a constant or whatever declared in a header file (e.g. using the extern keyword) but accidentally forgot to actually implement it. For example:

//Header file
extern NSString *SampleNotificationName;


//Implmentation file
NSString *SampleNotificationName = @"SampleNotification";


You need both of these—but I trust you already know that. Did you make sure that you don't have any odd macros that hide code from the compiler or that your build settings aren't accidentally excluding some .m files from the build?

Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_ATParams"
 
 
Q