worklight、wikitude和sqlcipher框架的iOS模拟器生成错误

worklight、wikitude和sqlcipher框架的iOS模拟器生成错误,ios,ibm-mobilefirst,wikitude,Ios,Ibm Mobilefirst,Wikitude,我正在使用worklight,一个叫做wikitude的增强现实插件和一个叫做sqlcipher的框架。当我为设备或档案构建时,这些在iOS上运行良好,但当我尝试为模拟器构建时,会出现一个我从未见过的警告,后面会出现大量重复的符号错误: ld: warning: tentative definition of '_OPENSSL_ia32cap_P' with size 8 from '/Users/mine/apps/wl/iphone/native/Frameworks/sqlcipher.

我正在使用worklight,一个叫做wikitude的增强现实插件和一个叫做sqlcipher的框架。当我为设备或档案构建时,这些在iOS上运行良好,但当我尝试为模拟器构建时,会出现一个我从未见过的警告,后面会出现大量重复的符号错误:

ld: warning: tentative definition of '_OPENSSL_ia32cap_P' with size 8 from '/Users/mine/apps/wl/iphone/native/Frameworks/sqlcipher.framework/sqlcipher(cryptlib.o)'
is being replaced by real definition of smaller size 4 from '/Users/mine/apps/wl/iphone/native/libWikitudeSDK.a(cryptlib.o)'
然后此错误(被截断):

Wikitude通过libWikitudeSDK.a包含在项目中,并处于与库链接的构建阶段,而sqlcipher是在同一位置添加的.framework。我的其他链接器标志设置为-ObjC,正如我们使用-all_load时一样。它导致wikitudeSDK和worklightSDK之间出现上述相同的重复符号问题

我遵循了关于如何避免重复错误的说明,但尽管它修复了cryptlib.o的一个问题,但它只会打开数百个新的重复符号错误。在构建新库时,我也尝试了lipo-arch_blank i386,但这只会导致架构i386错误的未定义符号

很明显,我并没有试图在模拟器中运行增强现实组件,我只是想使用模拟器为我的应用程序的其他方面进行开发,这些方面不依赖于wikitude

虽然暂时从项目中删除wikitude是一种选择,但项目中的版本控制只会让所有相关人员头疼,并引入额外的不必要的复杂性


提前感谢您提供的任何见解。

我没有看到您使用的Worklight版本,但我认为它是6.2之前的版本。在Worklight 6.2中,用一系列特定库的-force_加载标志替换了-all_加载标志

您可以尝试对特定库使用-force\u-load,而不是-all\u-load。Worklight 6.1有一个技术说明,描述了如何执行此操作:。由于您没有使用FIPS 140-2可选功能,因此不会为libfipshttp.a添加-force_加载;您将为libCordova.a和libWorklightStaticLibProject.a添加-force_加载,并按照所述删除-all_加载。请注意,如果在链接时得到未定义的符号,则可能需要为正在使用的其他库添加-force_load


以下是一个链接,介绍了Worklight 6.2在章节

下的更改,以供参考。感谢您的回复。哎呀,按回车键不是shift+enter键。对不起,我正在使用WL6.1.0。我将链接器标志切换为使用-force_load,但现在我得到了数百个错误的形式:
架构i386的未定义符号:“_TIFFClientOpen”,引用自:libWikitudeSDK.a(PluginTIFF.o)中的tiffdopen(void*,char const*,char const*)libWikitudeSDK.a(PluginTIFF.o)中的Open(FreeImageIO*,void*,int)WikitudeSDK(PluginTIFF.o)中的tiffdOpen(void*,char const*,char const*)和WikitudeSDK(PluginTIFF.o)中的Open(FreeImageIO*,void*,int)
。这看起来像是WikitudeSDK引用的符号,而不是Worklight。您也可以尝试强制加载该库,或者如果需要其他库,您可以尝试强制加载这些库。虽然这也可能让你们回到你们开始的地方,用重复的符号。
duplicate symbol _CRYPTO_THREADID_cmp in:
/Users/mine/apps/wl/iphone/native/Frameworks/sqlcipher.framework/sqlcipher(cryptlib.o)
/Users/mine/apps/wl/iphone/native/libWikitudeSDK.a(cryptlib.o)
.
.
.
duplicate symbol _OpenSSLDie in:
/Users/mine/apps/wl/iphone/native/Frameworks/sqlcipher.framework/sqlcipher(cryptlib.o)
/Users/mine/apps/wl/iphone/native/libWikitudeSDK.a(cryptlib.o)
ld: 33 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)