ارسال و دریافت متغیر صحیح و اعشاری به JNI - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

ارسال و دریافت متغیر صحیح و اعشاری به JNI

0 امتیاز
سلام.

چطور متغیرهای صحیح و اعشاری را به عنوان پارامتر ورودی و خروجی به تابع jni ارسال کنم هم سمت جاوا و هم سمت c++ را نیاز دارم
سوال شده آذر 20, 1399  بوسیله ی ٍEydi (امتیاز 68)   5 14 16

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

برای ارسال متغیرهای صحیح و اعشاری به عنوان پارامتر ورودی و خروجی به یک تابع JNI، می‌توانید از نوع داده‌های معادل در جاوا و C++ استفاده کنید. برای مثال، برای ارسال یک متغیر صحیح از جاوا به C++، می‌توانید از نوع jint در C++ و int در جاوا استفاده کنید. برای ارسال یک متغیر اعشاری، می‌توانید از نوع jdouble در C++ و double در جاوا استفاده کنید.

در زیر یک نمونه کد برای تعریف یک تابع JNI در C++ آورده شده است که دو پارامتر صحیح و یک پارامتر اعشاری را به عنوان ورودی دریافت کرده و یک مقدار اعشاری را به عنوان خروجی برمی‌گرداند:


#include <jni.h>

extern "C"
JNIEXPORT jdouble JNICALL
Java_com_example_myapplication_MainActivity_myFunction(JNIEnv *env, jobject thiz, jint a, jint b, jdouble c) {
    // Your code here
    return a + b + c;
}

در جاوا، می‌توانید این تابع را با استفاده از کلمه کلیدی native تعریف کنید و سپس با فراخوانی آن، پارامترهای مورد نظر را به آن ارسال کنید:


public class MainActivity extends AppCompatActivity {
    static {
        System.loadLibrary("mylibrary");
    }

    public native double myFunction(int a, int b, double c);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        double result = myFunction(1, 2, 3.0);
    }
}

 

پاسخ داده شده شهریور 3, 1402 بوسیله ی toopak (امتیاز 2,458)   16 48 66
انتخاب شد شهریور 8, 1402 بوسیله ی farnoosh
...