我为Wikitude SDK框架创建的monotouch绑定在运行时不起作用。我按照以下说明创建了我的绑定:https://stackoverflow.com/a/13070064/42826。
当我尝试在运行时实例化我的包装类时,我得到以下异常:
包装类型'Wikitude.WTArchitectView'缺少其原生代码 ObjectiveC类'WTArchitectView'。
看起来本机类 WTArchitectView 在运行时不会被绑定程序集加载。本地库 WikitudeSDK.a 确实位于具有 ObjcBindingNativeLibrary 构建操作的绑定程序集中。
以下是我的 LinkWith 声明(请注意 Wikitude 本机库的{strong> -ObjC ,required):
[assembly: LinkWith ("WikitudeSDK.a", LinkTarget.ArmV7 | LinkTarget.Simulator, Frameworks = "CoreVideo Security SystemConfiguration CoreMedia AVFoundation CFNetwork CoreLocation CoreMotion MediaPlayer OpenGLES QuartzCore CoreGraphics", ForceLoad = true, LinkerFlags = "-ObjC", IsCxx = true)]
我的大多数 ApiDefinition.cs 都是使用 Objective Sharpie 创建的。 注意:我只留下一个功能用于测试目的。
namespace Wikitude
{
[BaseType (typeof (UIView))]
interface WTArchitectView {
[Export ("initializeWithKey:motionManager:")]
void InitializeWithKey (string key, NSObject motionManager);
}
}
以下是 Wikitude SDK标头文件:http://pastebin.com/HKBED11u
我的项目支持 ARMv7 + ARMv7s 架构。
我是否必须以某种方式强制加载本机库或者我是否只是错过了一些显而易见的东西以使包装器工作?
答案 0 :(得分:2)
LinkWith
属性仅提及ArmV7
和Simulator
为LinkTarget
。如果您的设备是Armv7s
,这可以解释为什么它不起作用。