为WireGuardKit构建React-Native封装,Swift测试应用链接报错求助
解决WireGuardKit React-Native封装的链接错误问题
问题根源
这是M2 Pro芯片+Xcode15环境下的典型兼容性问题:libwg-go.a的arm64模拟器编译产物符号表损坏,而且缺少Go CGO依赖的Darwin ARM异常处理相关符号,导致链接时找不到对应实现。
修复步骤
1. 重新编译libwg-go.a,适配模拟器架构
别用默认编译命令,针对模拟器和真机分别编译再合并,避免架构混淆:
# 编译真机版本 CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 SDKROOT=$(xcrun --sdk iphoneos --show-sdk-path) go build -buildmode=c-archive -o libwg-go-iphoneos.a # 编译模拟器版本 CGO_ENABLED=1 GOOS=darwin GOARCH=arm64 SDKROOT=$(xcrun --sdk iphonesimulator --show-sdk-path) go build -buildmode=c-archive -o libwg-go-iphonesimulator.a # 合并成支持双架构的胖库 lipo -create libwg-go-iphoneos.a libwg-go-iphonesimulator.a -output libwg-go.a
替换掉项目中原有的libwg-go.a文件。
2. 调整Xcode项目构建设置
- 打开项目的Build Settings,找到Architectures,设置为
$(ARCHS_STANDARD);Excluded Architectures里,Debug-iphonesimulator项不要添加arm64(M系列模拟器本身使用arm64架构,排除会直接导致编译失败) - 找到Other Linker Flags,添加
-framework CoreFoundation -framework SystemConfiguration,补全依赖的系统框架 - 删除DerivedData文件夹:
/Users/zach/Library/Developer/Xcode/DerivedData/vpn-testing-2-bwlltvgctdybzvheohentkkatmte,再执行Clean Build操作
3. 补全系统库依赖
如果仍报错,前往项目的Linked Frameworks and Libraries中添加libSystem.B.tbd——你缺失的两个异常处理符号就包含在这个系统库内。
4. 核对WireGuardKit版本
确保使用的是适配Xcode15的WireGuardKit稳定版本,旧版本可能未适配M系列芯片的新编译逻辑。
内容的提问来源于stack exchange,提问作者ZachT112
相关产品推荐
相关产品推荐

