如何在monotouch中链接项目时修复MT5210错误

时间:2014-10-23 06:24:00

标签: hyperlink xamarin.ios

当我绑定obj-C静态库时,我遇到了一个错误。

错误MT5210:本机链接失败,未定义符号:_ASN1_INTEGER_get。请验证是否已引用所有必需的框架,并且已正确链接本机库。(MT5210)

我添加了linkflags:但问题仍然存在。

(请找到attacment - 下载项目源代码的链接:http://web.chinamail.com.cn/coremail/viewDownloadFile.jsp?key=1U31SsvkjDKKh8jW-sKpSejdo9FpT7FAantnwBILzVvton2LzVFmT9EAfnJL3ZElon2kz48ZwbGpS4APTuYBzVFmT9EAfnJMfeYpzsFP-sKqTs0mTbk8Ss2maUrUUUUjjnCgTuDn0ka6r4rtFy3ZFWrXFWxGFcF6hVqUfZk1Tsvk1q3Ur7jAUn5U-7jjU08U27jnU87Ur7jeU83U3DjnU8kUwUjXUnfU77jjUntUh70mUiEH4GA=&code=9zj2jqjt

错误MT5210:本机链接失败,未定义的符号:_SSL_CTX_load_verify_locations。请验证是否已引用所有必需的框架,并且已正确链接本机库。(MT5210)

错误MT5210:本机链接失败,未定义的符号:_X509_STORE_CTX_get_ex_data。请验证是否已引用所有必需的框架,并且已正确链接本机库。(MT5210)

错误MT5210:本机链接失败,未定义符号:_sk_num。请验证是否已引用所有必需的框架,并且已正确链接本机库。(MT5210)

“_ SSL_CTX_free”,引自:       libEaseMobClientSDKLite.a中的_init_openssl(ssl_sock_ossl.o)       libEaseMobClientSDKLite.a中的_reset_ssl_sock_state(ssl_sock_ossl.o)       libEaseMobClientSDKLite.a中的_create_ssl(ssl_sock_ossl.o)   “_SSL_CTX_load_verify_locations”,引自:       libEaseMobClientSDKLite.a中的_create_ssl(ssl_sock_ossl.o)

我添加了linkflags:

[assembly:LinkWith(“libEaseMobClientSDKLite.a”,LinkTarget.ArmV7 | LinkTarget.ArmV7s | LinkTarget.Simulator,ForceLoad = true,     Frameworks =“SystemConfiguration QuartzCore OpenGLES Security CoreText ImageIO MapKit CoreLocation MobileCoreServices AddressBook CFNetwork UIKit Foundation Social CoreGraphics”,     LinkerFlags =“ - lz -lxml2 -liconv -lresolv -lstdc ++” )]

以下的屏幕快照是可以通过XCode成功构建的ObjC项目。 enter image description here

1 个答案:

答案 0 :(得分:0)

<强>问题

这些符号看起来像是来自OpenSSL(libssl),这不是您展示的[LinkWith]属性的一部分。您也无法添加到可以链接的动态库的LinkerFlags=列表中。

<强>解决方案

  • 您可能错过了项目的另一个静态.a库;

  • 您正在使用的
  • libEaseMobClientSDKLite.a编译错误(通常包含openssl对象文件)。

如果您有 EaseMobClientSDKLite 的ObjC示例,那么您可以查看Xcode构建日志(链接步骤)以查看构建中引用的openssl的内容(以及如何)。