Xamarin QQ Sdk的简单绑定过程

      项目中要用到分享功能,但是又不想用第三方的分享Sdk,所有就直接去绑定原生Sdk来实现。这里简单记录一下iOS下QQ SDK的绑定过程,以备以后查询。

      前面的准备工作就不说了,这里是在安装好Xcode,Sharpie的情况下去绑定。在这里碰到一个坑,如果你安装的Sharpie版本是3.4以下的版本,使用以下命令是没有问题的,可以正常生成ApiDefinition.csStructs.cs两个文件

sharpie bind --output=Static -namespace=TecentIM -sdk=iphoneos11.2 Headers/*.h

但是如果是3.4版本,那么使用上面的命令就会生成巨大的文件,本来就是几十K的文件,结果生成出来是几M的文件,很明显是不对的,这里我们就要在命令里面多加个参数-scope Headers。命令如下:

sharpie bind --output=Static -namespace=TecentIM -sdk=iphoneos11.2 
-scope Headers
 Headers/*.h

正确生成这两个文件后,我们来新建iOS绑定库。这个必须要在Mac上来生成了。新建项目后,我们把刚才的两个文件替换掉项目里面的同名的文件。把ios Sdk添加到项目的本地应用里面。然后我们就可以尝试生成项目了,会发现有不少的错误,首先来修改Structs.cs文件里面的内容,会发现有写枚举是继承uint,我们把它删除掉,

{0B1A40B7-9410-B557-F9B5-BC9816AE24BF}

如果有Verify的特性在的话也统统删除掉。ApiDefinition.cs文件里面带Verify特性的也全部删除掉此特性。接着重新编译项目,会发现如下错误:

 

{7E22876F-EE18-7E6A-3C3C-3245B8011842}

我们看下错误提示是没有找到此接口类型,我们看上面的注释,很显然这里应该是TencentLoginDelegate,TencentWebViewDelegate。接着看下个错误:

{E328F246-3DFC-3071-C227-C871752E2367}

重复定义Static,我们把这行删除掉。

{C621F343-8231-000B-4A09-67811395F967}

这里TencentAuthorizeState是一个枚举类型,在C#中不是这样用的,修改下定义

{6DE05301-8E80-2E91-1B56-2ACF65620003}

接着我们在尝试编译项目,发现成功了。接下来我们应该做什么那,我们要看下该SDK依赖哪些库,我们要把这些库加进去,否则在项目中使用的时候会报错,依赖的静态库有如下这些:

SystemConfiguration CoreTelephony QuartzCore CoreGraphics Security

依赖的动态库有如下这些:

-ObjC -fobjc-arc -lstdc++ -lz -dead_strip -lsqlite3 -lc++ -liconv

{76C2AA61-30B6-6CA5-A2BE-A445311425C4}

 

 

原文地址:https://www.cnblogs.com/zjmsky/p/8298035.html