我在C中的eclipse(Android項目)上做了兩個簡單的函數(設置並返回一個int)。我使用ndk-build來生成一個.so。我如何在Xamarin上使用這個.so,並在Xamarin.Android項目上使用這兩個函數?Xamarin:使用NDK構建的.so
謝謝!
我在C中的eclipse(Android項目)上做了兩個簡單的函數(設置並返回一個int)。我使用ndk-build來生成一個.so。我如何在Xamarin上使用這個.so,並在Xamarin.Android項目上使用這兩個函數?Xamarin:使用NDK構建的.so
謝謝!
我們假設我們有一個名爲MyTest.so的共享庫,我們想在Xamarin.Android項目中使用它。 MyTest.so包含一個函數
int MyTest_GetValue();
現在,我們需要在Xamarin.Android項目上使用這個函數。下面是成功的步驟:
第1步:在Xamarin.Android項目中創建一個名爲lib和子文件夾armeabi的新文件夾。按照說明覆制我的.so庫以用於armeabi文件夾here
步驟2:將library.so(導入的庫)的屬性設置爲「AndroidNativeLibrary」的構建操作並複製爲輸出到「始終複製」。
步驟3:(在Xamarin.Android類例如工作:MainActivity.cs)
由包括命名空間InteropServices「使用System.Runtime.InteropServices;」
使用標準的DllImport導入本地庫的項目如下: [DllImport(「MyTest.so」)] public extern static int MyTest_GetValue(); //具有確切的函數名稱,類型& .so Lib中的參數。
第4步:在應用程序中使用上面的函數(MyTest_GetValue())。
例如:
int值= MyTest_GetValue();
Console.Writeline(value.ToString());
任務完成!:D
你可以用[out]參數顯示一個示例函數嗎?像 bool MyTest_GetValue(string * retVal); 謝謝 – hrz 2016-06-29 06:30:56
據我所知,使用[out]參數不應該有任何不同。執行步驟1和2,然後執行步驟3,其中包含帶[out]參數的函數,最後執行步驟4以消耗該函數應該可以正常工作。 注意:Xamarin自2013年以來發生了很大變化(這個問題)。 – 2016-06-30 19:51:12