Ios libcrypto和libGoogleAdMobAds中的重复符号_MD5

Ios libcrypto和libGoogleAdMobAds中的重复符号_MD5,ios,linker,compiler-errors,Ios,Linker,Compiler Errors,编译为armv7结构时,我的项目出现以下错误: duplicate symbol _MD5 in: /Users/User1/Documents/codes/ProgramList1/libraries/armv7/lib/libcrypto.a(md5_one.o) /Users/User1/Documents/codes/ProgramList1/ProgramList1/ADs/AdsMoGoLib/AdNetworkLibs/AdMob_SDK_621/libGoogle

编译为armv7结构时,我的项目出现以下错误:

duplicate symbol _MD5 in:
    /Users/User1/Documents/codes/ProgramList1/libraries/armv7/lib/libcrypto.a(md5_one.o)
    /Users/User1/Documents/codes/ProgramList1/ProgramList1/ADs/AdsMoGoLib/AdNetworkLibs/AdMob_SDK_621/libGoogleAdMobAds.a(GADGestureCFiles.o)
ld: 1 duplicate symbol for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我用谷歌搜索了这个问题,我读到有人建议将两个LIB合并为一个,以消除重复符号,如下所示:

> lipo libGoogleAdMobAds.a -thin armv7 -output libGoogleAdMobAds-armv7.a
> mkdir armv7
> cd armv7/
> ar -x ../libGoogleAdMobAds-armv7.a 
> ar -x ../libcrypto.a 
> libtool -static -o ../libcrypto-googlead-armv7.a *.o
最后,我返回到project,从链接标志中删除libGoogleAddMobads.a和libcrypto.a,并将新的组合库添加到project中

但我还是得到了同样的错误:

duplicate symbol _MD5 in:
    /Users/User1/Documents/codes/ProgramList1/libraries/armv7/lib/libGoogleAdMobAds-armv7.a(md5_one.o)
    /Users/User1/Documents/codes/ProgramList1/ProgramList1/ADs/AdsMoGoLib/AdNetworkLibs/libGoogleAdMobAds-armv7.a(GADGestureCFiles.o)
ld: 1 duplicate symbol for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

正如您所看到的,在同一个库中有重复的符号。我现在该怎么办?

重新发布评论以获取答案


“是否在项目/目标生成设置的其他链接器标志中设置了all_load标志?”

以下是有关所有_load的功能的详细说明:


删除
-在生成设置链接器标志中加载所有内容


删除是安全的,即使有些库要求您添加它。

您是否在项目/目标生成设置的其他链接器标志中设置了all_load标志?是的,我的其他链接器标志如下:-all_load-ObjC-lxml2-levent-lssl-lcurl-l…。顺便说一句,此错误仅在为iOS(armv7)生成时发生,在为模拟器(i386)生成时发生,该项目已成功构建。感谢Calvinbai,从链接标志中删除所有_加载后,它现在可以工作了。我还发现了我在答案中发布的链接。你会更好地理解为什么会有这个问题。