Giả sử chúng tôi có một thư viện được chia sẻ có tên là MyTest.so và chúng tôi muốn sử dụng nó trong dự án Xamarin.Android. MyTest.so bao gồm một hàm
int MyTest_GetValue();
Bây giờ, chúng tôi cần sử dụng chức năng này trên dự án Xamarin.Android. Dưới đây là các bước để thành công:
Bước 1: Tạo thư mục mới bên trong dự án Xamarin.Android có tên là lib và thư mục con thư mục con. Sao chép thư viện .so của tôi để được sử dụng bên trong thư mục armeabi như đã nêu here
Bước 2: Đặt thuộc tính của thư viện.so (thư viện đã nhập) Xây dựng hành động cho "AndroidNativeLibrary" và Sao chép sang đầu ra thành "Luôn sao chép".
Bước 3: (Làm việc trong Xamarin.Android Lớp ví dụ: MainActivity.cs)
Bao gồm InteropServices namespace bằng cách “sử dụng System.Runtime.InteropServices;”
Sử dụng DllImport tiêu chuẩn trong dự án để nhập thư viện gốc như sau: [DllImport ("MyTest.so")] public extern static int MyTest_GetValue(); // với Tên câu hỏi chính xác, Loại & Params trong .so Lib.
Bước 4: Sử dụng hàm trên (MyTest_GetValue()) trong ứng dụng.
Ví dụ:
int value = MyTest_GetValue();
Console.Writeline (value.ToString());
Nhiệm vụ hoàn thành!: D
Nguồn
2013-04-09 12:55:44
Bạn có thể hiển thị hàm mẫu với đối số [out] không? Giống như bool MyTest_GetValue (chuỗi * retVal); Cảm ơn – hrz
Theo như tôi có thể nghĩ đến, không nên có bất kỳ khác biệt nào khi sử dụng [đối số]. Thực hiện các bước 1 & 2, sau đó bước 3 bao gồm chức năng với các đối số [out] và cuối cùng là bước 4 để tiêu thụ chức năng đó sẽ hoạt động tốt. Lưu ý: Xamarin đã thay đổi rất nhiều kể từ năm 2013 (câu hỏi này). –