【转载】"library not found for - "解决办法

本文详细解析了在Xcode中使用第三方库时遇到的librarynotfoundfor-错误,提供了三种有效的解决方案,包括正确设置库文件路径、调整svn设置避免上传错误,以及重新添加库文件的方法。

[摘要:正在我们编译的时间偶然候会报那个毛病"library not found for - " 因为是我们正在项目中应用了一些第三圆的库,便比方我再应用百度的静态库文件的时间,报出的那个毛病。 当xcode正在编译的时]

在我们编译的时候有时候会报这个错误 "library not found for - "

\

由于是我们在项目中使用了一些第三方的库,就比如我再使用百度的静态库文件的时候,报出的这个错误。

当xcode在编译的时候却找不到这个库,从而导致如此。

所以我们要让xcode知道这个库文件在哪里,从而在编译的时候轻松的找到它。

 

解决办法:

获取 库文件所在的那个文件夹 路径,添加到 Target的Build Settings界面

\

 

 

 

iOS

 

ld:library not found for -lXXX 的问题有可能是你的某个库的连接引用有问题,解决的办法就是在项目的target里,选中Link Binary With Libraries 里的.a或framework 取消再加入,就可以了

 

ld:warning:directory not found option 的问题可能是framework search paths 还有Library Search Paths 里面并没有这个路径,删除即可

 

bug

 

duplicate就是重复的意思,那么看代码 要删除重复的openUDID,以及libwoa_two和sbjson冲突了,删除sbjson的点m即可

 

 

 

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 第一:原因分析: 说是XXX 库文件 not  found ,找不到,找不到原因无飞二种,第一种,没有添加该库文件;第二种,该库文件路径是绝对路径;因为

Xcode只是在本工程中查找,不会根据你随便 添加一个路径,他都会按照你的路径来,所以你需要重新设置他的路径,

 

 

第二 解决方案: 重新设置他的路径方法,就是右键然后 Delete —> Remove  Reference  , 这个操作做完之后,你在右键,这时候Xcode可能有个自身的

bug ,自身的bug是,当你右键 Add Files to XXX 的时候,你所调用出来的文件并不是你所在的文件夹,所以这时候你需要二次的 右键调出 Add Files to  XXX  。然

后你在重新编译,可以通过,一切正常运行。

      

第三 设置svn 进行解决此问题;你可能需要对你的svn进行一个设置,不然每次上传项目 你的库文件总是出错 ,我用的cornerstone 的这个svn ,然后是

打开这个svn ,

技术分享

选中 Preferences 这个选项,然后会跳转到一个界面,你在点击

技术分享

去掉这个选项,然后去掉这个 .a 选项,然后save  , 在上传文件的时候,你就可以看到.a 这个文件,然后Add 就可以上传了。

转载于:https://www.cnblogs.com/Bo-tree/p/5146155.html

<think> 我们正在处理一个Xcode编译报错:library not found for -lGameAssembly。结合用户提供的引用信息,我们可以总结出几种可能的解决方向: 1. 库文件确实缺失或路径错误(类似引用[1][3]的情况) 2. 架构设置问题,特别是Xcode升级后架构变化(引用[2]) 3. 第三方库配置问题(引用[4][5]) 由于错误中的库名为GameAssembly,这可能是Unity项目生成Xcode工程后的一个库(常见于Unity导出的iOS项目)。因此,我们可以按照以下步骤解决: 步骤1:确认库文件是否存在 -Xcode项目中,检查libGameAssembly.a(或类似)是否存在于项目目录中(通常位于Libraries目录)。 - 检查Build Phases -> Link Binary With Libraries中是否存在该库,如果存在但显示红色,则说明路径错误或文件缺失。 步骤2:添加库文件路径 - 如果库文件存在,检查Build Settings -> Library Search Paths(LIBRARY_SEARCH_PATHS)是否包含该库所在的路径。 - 可以添加一个相对路径,例如:$(PROJECT_DIR)/Libraries (假设库在Libraries文件夹下) 步骤3:检查架构设置 - 根据引用[2],Xcode12之后模拟器使用arm架构编译,而老项目可能还依赖x86_64。因此,检查Build Settings -> VALID_ARCHS,确保包含x86_64(针对模拟器)和arm64(针对真机)。 - 另外,检查Build Active Architecture Only设置,在Debug模式下可以设置为NO(确保所有架构都编译),但Release应设置为YES(以减少包大小)。 步骤4:检查是否因为Xcode版本升级导致库被移除(类似于libstdc++的问题) - 引用[1][3][5]提到Xcode10以上移除了libstdc++,但我们的错误是-lGameAssembly,所以不是同一个库。因此,排除这个原因。 步骤5:如果是通过CocoaPods引入,检查Pod配置 - 引用[5]提供了一种通过修改Podfile来替换库名的方法,但我们的库是GameAssembly,通常不是通过CocoaPods引入的,因此这一步骤可能不适用。但如果GameAssembly是某个Pod库依赖的,那么可能需要检查该Pod库的配置。 步骤6:清理和重新生成 - 清理项目(Product -> Clean Build Folder),然后重新编译。 - 重新生成Unity导出的Xcode项目(如果是Unity项目,有时候重新导出可以解决)。 根据以上步骤,我们给出以下具体解决方案: 解决方案1:确认库文件并设置搜索路径 1. 在Finder中定位到你的Xcode项目目录,检查是否存在libGameAssembly.a(或libGameAssembly.tbd等)。 2. 在Xcode中,将库文件拖入项目中(如果尚未添加),确保勾选“Copy items if needed”和你的target。 3. 如果库已经在项目中,但链接时找不到,可能是搜索路径不对。在Build Settings中搜索“Library Search Paths”,添加库所在的路径(例如:$(PROJECT_DIR)/Libraries)。 解决方案2:设置架构 1. 在Build Settings中,找到“Valid Architectures”(VALID_ARCHS),添加x86_64和arm64(如果缺少)。 2. 将“Build Active Architecture Only”设置为NO(Debug模式下),确保模拟器和真机架构都被支持。 解决方案3:重新生成Xcode项目(针对Unity项目) 如果是Unity导出的项目,尝试重新导出Xcode项目,并确保导出时没有错误。 解决方案4:检查依赖关系 如果GameAssembly是某个依赖库所需的,确保该依赖库被正确安装和配置。 由于具体项目结构可能不同,请根据实际情况调整。 相关问题: 1. 如何检查Xcode中的库文件是否存在? 2. 如何设置XcodeLibrary Search Paths? 3. Xcode中如何设置架构(ARCHS和VALID_ARCHS)? 4. Unity导出的Xcode项目常见问题有哪些? 5. 如何清理Xcode的构建缓存? </think> ### 解决Xcode编译报错 "library not found for -lGameAssembly" 的方法 根据引用信息和Xcode常见问题,以下是系统性的解决方案: --- #### 1. **确认库文件存在性** [^1][^3] - 检查项目是否包含 `libGameAssembly.a`(或 `.tbd`)文件 - 在Finder中搜索 `GameAssembly`,确认文件路径: ```bash find ~/ProjectDir -name "*GameAssembly*" ``` - 若文件缺失,需重新添加库文件或联系库提供方 #### 2. **设置库搜索路径** [^1][^3][^4] 在Xcode中配置: ```markdown Target → Build Settings → Library Search Paths ``` - 添加库文件所在目录路径(例如:`$(PROJECT_DIR)/Libraries`) - 使用 `recursive` 模式(路径后加 `/ **`)增强搜索能力 #### 3. **架构兼容性修复** [^2][^4] ```markdown Target → Build Settings → Build Active Architecture Only ``` - **Debug模式**:设置为 `NO`(确保编译所有架构) - **Release模式**:保持 `YES`(优化包体积) ```markdown Target → Build Settings → VALID_ARCHS ``` - 添加 `x86_64`(模拟器)和 `arm64`(真机) #### 4. **链接阶段验证** [^1][^5] ```markdown Target → Build Phases → Link Binary With Libraries ``` - 确认 `libGameAssembly` 存在于列表中 - 若显示红色丢失状态,右键选择 `Locate File` 重新关联 #### 5. **清除构建缓存** [^2] ```terminal # 终端执行 rm -rf ~/Library/Developer/Xcode/DerivedData rm -rf Pods/ ; pod install ``` 在Xcode菜单: ```markdown Product → Clean Build Folder ``` #### 6. **针对Unity项目的特殊处理** [^3][^5] 如果是Unity导出的Xcode工程: - 检查 `UnityFramework` 模块是否包含 `GameAssembly` 依赖 - 在 `Podfile` 添加后编译指令(模仿引用[5]): ```ruby post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['LIBRARY_SEARCH_PATHS'] = [ "$(inherited)", "$(PROJECT_DIR)/Libraries" ] end end end ``` --- ### 关键检测流程图 ```mermaid graph TD A[报错 library not found for -lGameAssembly] --> B{库文件是否存在} B -- 存在 --> C[检查Library Search Paths] B -- 不存在 --> D[重新添加库文件] C --> E{路径配置正确} E ----> F[检查架构兼容性] E ----> G[修正搜索路径] F --> H{包含x86_64/arm64} H ----> I[清理构建缓存] H ----> J[添加缺失架构] I --> K[重新编译] ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值