【发布时间】:2014-09-16 16:19:22
【问题描述】:
我创建了一个 iOS 绑定项目,添加我的静态库,该库创建了以下 linkwith.cs 内容以及一些我需要的添加框架和链接器标志
[assembly: LinkWith ("libMyLibrary-iOS.a", LinkTarget.ArmV7 | LinkTarget.ArmV7s | LinkTarget.Simulator,Frameworks = "CoreTelephony SystemConfiguration UIKit Foundation CoreGraphics", LinkerFlags = "-ObjC -all_load -lz -lstdc++", ForceLoad = true )]
在 ApiDefinition.cs 文件中,我复制了 Objective-Sharpie 创建的内容,并添加了一些遗漏的更正和补充。还将所有枚举移至 StructsAndEnums.cs。
我也注意到了一些奇怪的事情,intelisense 不适用于某些属性,特别是 BaseType 和 Static 是红色的并且无法识别,而 StructsAndEnums.cs 文件中的枚举。第二次构建成功,如果我清理并尝试构建我在自动生成的文件中得到错误,或者如果我尝试重建我总是得到错误,第二次构建很好。
静态库文件是 12.5MB,但结果 .dll 发布版本只有 4kb,我觉得这很奇怪,而且由于它不是我创建的第一个绑定库,我知道 .a 库应该合并到 .dll 中图书馆。
检查文件的构建操作看起来是正确的。
libMyLibrary-iOS.a -> ObjcBindingNativeLibrary
ApiDefinition.cs -> ObjcBindingDefinition
StructsAndEnums.cs -> ObjcBindingCoreSource
没有修改或添加项目属性,只是 Xamarin Studio 5.3 (build 441) 的新绑定项目。
在解决方案中,我创建了一个单视图应用程序,添加了绑定项目库作为参考,但没有可见的命名空间可用于使用接口协定。
我可以采取什么措施来解决或调试问题?
[编辑]
我在重建项目时遇到的编译错误是关于我这样设置的块
public delegate string SPLJSONModelKeyMapBlock (string keyName);
并在这个界面中使用
[BaseType (typeof (NSObject))]
public partial interface SPLJSONKeyMapper {
[Export ("JSONToModelKeyBlock")]
SPLJSONModelKeyMapBlock JSONToModelKeyBlock { get; }
[Export ("modelToJSONKeyBlock")]
SPLJSONModelKeyMapBlock ModelToJSONKeyBlock { get; }
[Export ("initWithJSONToModelBlock:modelToJSONBlock:")]
IntPtr Constructor (SPLJSONModelKeyMapBlock toModel, SPLJSONModelKeyMapBlock toJSON);
[Export ("initWithDictionary:")]
IntPtr Constructor (NSDictionary map);
[Static, Export ("mapperFromUnderscoreCaseToCamelCase")]
SPLJSONKeyMapper MapperFromUnderscoreCaseToCamelCase { get; }
[Static, Export ("mapperFromUpperCaseToLowerCase")]
SPLJSONKeyMapper MapperFromUpperCaseToLowerCase { get; }
}
Trampolines.g.cs中的错误截图
【问题讨论】:
标签: c# objective-c binding xamarin.ios xamarin-studio