我想從本地項目中嵌入一些JAR到我的Xamarin Android應用程序,我已經打了兩個單獨的(但我懷疑有關)問題:Xamarin Android:不能嵌入Jna-4.2.0.jar到Android綁定項目
- 包中的一個文件是jna-4.2.0.jar。當我嘗試建立自身的綁定項目,我得到這個錯誤:
The type or namespace name 'ICallback' does not exist in the namespace 'Com.Sun.Jna' (are you missing an assembly reference?)
生成的代碼如下:
[Register ("getCallback", "(Ljava/lang/Class;Lcom/sun/jna/Pointer;)Lcom/sun/jna/Callback;", "")]
public static unsafe global::Com.Sun.Jna.ICallback GetCallback (global::Java.Lang.Class type, global::Com.Sun.Jna.Pointer p)
{
if (id_getCallback_Ljava_lang_Class_Lcom_sun_jna_Pointer_ == IntPtr.Zero)
id_getCallback_Ljava_lang_Class_Lcom_sun_jna_Pointer_ = JNIEnv.GetStaticMethodID (class_ref, "getCallback", "(Ljava/lang/Class;Lcom/sun/jna/Pointer;)Lcom/sun/jna/Callback;");
try {
JValue* __args = stackalloc JValue [2];
__args [0] = new JValue (type);
__args [1] = new JValue (p);
global::Com.Sun.Jna.ICallback __ret = global::Java.Lang.Object.GetObject<global::Com.Sun.Jna.ICallback> (JNIEnv.CallStaticObjectMethod (class_ref, id_getCallback_Ljava_lang_Class_Lcom_sun_jna_Pointer_, __args), JniHandleOwnership.TransferLocalRef);
return __ret;
} finally {
}
}
我也曾嘗試下載最新版本,JNA -4.4.0.jar,從https://github.com/java-native-access/jna,但生成相同的錯誤。
- 我使用的庫生成此錯誤:
'Version' does not implement interface member 'IComparable.CompareTo(Object)'
我試圖解決這個問題,以下的Xamarin文檔,以及使用中的註釋生成的cs
文件,加入這行來metadata.xml
文件在我綁定的項目:
<attr path="/api/package[@name='com.innovatrics.iface']/class[@name='Version']/method[@name='compareTo'
and count(parameter)=1
and parameter[1][@type='com.innovatrics.iface.Version']]"
name="managedType">Java.Lang.Object</attr>
但是這似乎已經沒有任何影響。