Supponiamo di avere una libreria condivisa denominata MyTest.so e vogliamo utilizzarla nel progetto Xamarin.Android. MyTest.so è costituito da una funzione
int MyTest_GetValue();
Ora, abbiamo bisogno di utilizzare questa funzione sul progetto Xamarin.Android. Ecco i passaggi per il successo:
Passaggio 1: creare una nuova cartella all'interno del progetto Xamarin.Android denominato lib e sottocartella armeabi. Copiato la mia libreria .so da utilizzare all'interno della cartella armeabi come indicato here
Passaggio 2: Impostare le proprietà della libreria.so (libreria importata) Creare l'azione su "AndroidNativeLibrary" e copiare su "Copia sempre".
Fase 3: (Lavorare in Xamarin.Android Classe ad esempio: MainActivity.cs)
Includere le InteropServices namespace da “using System.Runtime.InteropServices;”
Utilizzare il DllImport di serie nel progetto per importare la libreria nativa come di seguito: [DllImport ("MyTest.so")] public extern static int MyTest_GetValue(); // con esatto nome Functtion, tipo & Params in .so Lib.
Passaggio 4: Consuma la funzione sopra riportata (MyTest_GetValue()) nell'applicazione.
Per esempio:
valore int = MyTest_GetValue();
Console.Writeline (value.ToString());
Missione compiuta!: D
fonte
2013-04-09 12:55:44
Puoi mostrare una funzione di esempio con un argomento [out]? Come bool MyTest_GetValue (stringa * retVal); Grazie – hrz
Per quanto posso pensare, non dovrebbe essere diverso usando gli argomenti [out]. Esecuzione dei passaggi 1 e 2, quindi del passaggio 3 che include la funzione con gli argomenti [out] e infine il passaggio 4 per il consumo di tale funzione dovrebbe funzionare correttamente. Nota: Xamarin è cambiato molto dal 2013 (questa domanda). –