我最终确定了一个开源C编码的CometD库,我认为将它打开给像我这样的OSX/iOS用户是一个好主意.
为了简化OSX/iOS开发人员的工作,我想从静态C库切换到Xcode iOS Static Libary.所以我按照网上的建议,生成了一个静态的iOS兼容库.
问题是,每当我尝试使用它时,我都会收到类型错误:
架构x86_64:******的未定义符号,引用自: - **********in*******.a(*******.o)
我的库中几乎每个C函数都会重复此错误.
首先我想也许库不是x86_64 compatible,空的,或者真的没有任何x86_64符号.
所以我在图书馆检查了"lipo -info",这是答案:
确实我还在库上使用了"nm -arch x86_64",并将Xcode报告的几个未定义函数作为错误.我以为我会错,除了猜猜什么都找不到?
所以我的问题是:
如果符号存在于x86_64兼容库中,为什么Xcode会提示此错误?即使我为所有arm*/s类型编译库,我仍然会收到此x86_64错误.
我没有意识到某事或我只是做错了吗?
您的答案总是受到赞赏.
更新(这是Xcode项目的链接):https://github.com/GhostGumm/CometD-x86_64-issue
更新2:Trojanfoe先生引起了我对编译时的链接警告的注意.实际上,链接器似乎错过了加载库以寻找不存在的目录.将库移动到右侧目录,手动链接后,x86_64错误消失.
可悲的是,问题仍然存在.在成功编译之后,我尝试使用lib,但是,当我"分配"和"初始化"我的主类时,如下所示:
ZetaFactory *Client = [[ZetaFactory alloc] init];
Run Code Online (Sandbox Code Playgroud)
x86_64错误随着十亿个太阳的真正激烈而咆哮.我发布了Xcode项目的链接,请随意测试它,因为我没有更多关于如何解决它的想法,但更重要的是为什么以及在哪里有这个错误.
尽管如此,我还是会继续调查.
我正在尝试在我的iSO应用中添加Google Analytics,并且我正在使用Google Analytics最新的SDK https://developers.google.com/analytics/devguides/collection/ios/v3/.
成功添加了所有必需的标题和框架到我的项目.但在运行我的应用程序时,我遇到了错误
(null):"_ OBJC_CLASS _ $ _ GGLContext",引自:AppDelegate.o中的objc-class-ref
(null):链接器命令失败,退出代码为1(使用-v查看调用)
下面是我在AppDelegate.m文件中写的代码
// Configure tracker from GoogleService-Info.plist.
NSError *configureError;
[[GGLContext sharedInstance] configureWithError:&configureError];
NSAssert(!configureError, @"Error configuring Google services: %@", configureError);
// Optional: configure GAI options.
GAI *gai = [GAI sharedInstance];
gai.trackUncaughtExceptions = YES; // report uncaught exceptions
gai.logger.logLevel = kGAILogLevelVerbose; // remove before app release
Run Code Online (Sandbox Code Playgroud)
还包括(_OBJC_CLASS _ $ _ GIDSignInButton和_OBJC_CLASS _ $ _ GIDSignIn)请告诉我缺少什么.提前致谢.
架构x86_64的未定义符号:"_ OBJC_CLASS _ $ _ WKWebView",引自:ld:未找到架构x86_64 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)
任何帮助表示赞赏!