首先,您是从 getsharekit.com 下载还是使用 ShareKit 2.0?如果您使用的是 getsharekit 的 DL,那么我强烈建议您先升级。其次,这里有一些基本的安装说明,用于让 ShareKit 与 MonoTouch 一起使用:
脚步
1) 下载代码
2) 在 Xcode 中打开,如果它是一个 App,则创建一个 iOS 库类型的新 Xcode 项目
3) 编译库并记下所需的框架 - 这些将在以后在 monotouch 中链接时帮助您
3) 编译 lib 的 i386 Sim 版本并重命名为 libXYZLib_Sim.a - 将其复制到项目中的 /Lib 并将其构建操作设置为 None。您可以在 /ProjectLib/build/Debug-iphonesimulator/ 下找到它
4) 使用正确的版本编译 arm6 版本并将其复制到项目中的 /Lib 并将其构建操作设置为无。您可以在 /ProjectLib/build/Debug-iphoneos/ 下找到它
5) 像这样对包含 .h 文件的库目录运行 NovellHeaderParser
@@ 单声道“/Users/XX/Projects/NovellHeaderParser/NovellHeaderParser/bin/Debug/NovellHeaderParser.exe”/Users/XX/Documents/ShareKitLib/ShareKit/Core @@
这应该会生成一个 MonoMac.cs 文件,您可以将其导入系统
6) 对其他目录重复步骤 5。注意您实际上只需要针对具有入口点的 .h 文件运行解析器,例如 API 直接调用的顶级类。子类、实用程序、辅助方法不需要解析。
7) 将所有 MonoMac.cs 文件合并到一个新的 MyLib.cs 文件中,并将其添加到 /Lib 下的项目中 - 将其构建选项设置为 None
8) 将任何引用从 MonoMac 更改为 MonoTouch
10) 解析器可能会为每个解析的目录创建一个 enum.cs 文件,但如果没有创建您自己的名为 MyLibEnum.cs 的文件,其中包含 API 所需的任何结构或枚举 - 将其添加到 /Lib 并将构建选项设置为 None
11) 打开终端窗口并导航到项目的 /Lib 目录
12) 运行以下 btouch 命令行 - 这将从 MyLib.cs @@ /Developer/MonoTouch/usr/bin/btouch -v MyLib.cs -s MyLibEnum.cs @@ 中定义的接口创建一个 wrapper.dll
13) 将任何缺少的枚举或结构添加到 MyLibEnum.cs 并重复步骤 12
14)通过重命名选择器的任何多个声明来修复它们 - 这可能会导致以后出现问题(见注1)
15) 修复任何缺失的引用,例如 NSMutableArray 在 monotouch 中似乎不存在,所以我将它们更改为 NSArrays(我认为这些在 monotouch 下是可变的???)
16)回到12)并重复,直到生成一个dll。
17)在项目中添加对dll的引用
18) 将以下内容添加到 iPhone Build> Additional mtouch options TO THE SIMULATOR DEBUG/RELEASE BUILD:@@ -gcc_flags "-L${ProjectDir}/Lib -lMyLib_Sim -framework QuartzCore -framework CoreGraphics -framework MessageUI -framework Security -framework UIKit -framework CFNetwork -force_load ${ProjectDir}/Lib/libMyLib_Sim.a -ObjC" @@
'''注意'''
-L${ProjectDir}/Lib 上没有尾随 /
-lShareKitLib_Sim 不需要起始 lib 前缀或 .a 后缀
为创建 lib 时使用的每个框架添加一个框架 - 上面不是详尽的列表
19) 将以下内容添加到 iPhone Build> Additional mtouch options TO THE IPHONE DEBUG/RELEASE BUILD:@@ -gcc_flags "-L${ProjectDir}/Lib -lMyLib -framework QuartzCore -framework CoreGraphics -framework MessageUI -framework Security -framework UIKit -framework CFNetwork -force_load ${ProjectDir}/Lib/libMyLib.a -ObjC" @@
20) 测试它!