Tình hình là mình đang ở bước cuối của JNI là import vào thôi, mình có đoạn code dưới dây
Mã:
#include<iostream>
#include"DemoJNI.h"
#include<jni.h>
using namespace std;
JNIEXPORT void JNICALL Java_DemoJNI_DemoJNI_PhuongThucKhongThamSo(JNIEnv *env, jobject obj)
{
cout << "Duoc goi trong c++: Day la phuong thuc khong tham so" << endl;
}
JNIEXPORT void JNICALL Java_DemoJNI_DemoJNI_PhuongThucMotThamSo(JNIEnv *env, jobject obj, jint thamso)
{
cout << "So duoc nhap vao: ";
cout << thamso; cout << endl;
}
JNIEXPORT void JNICALL Java_DemoJNI_DemoJNI_PhuongThucHaiThamSo (JNIEnv *env, jobject obj , jint thamso1, jint thamso2)
{
cout << "Tham so thu nhat: "; cout << thamso1; cout << endl;
cout << "Tham so thu hai: ";cout << thamso2; cout << endl;
}
JNIEXPORT void JNICALL Java_DemoJNI_DemoJNI_PhuongThucThamSoMang (JNIEnv *env, jobject obj, jintArray ptr)
{
// Lỗi trong đây, viết theo kiểu của C++ báo lỗi, Các phương thức trên in ra bình thường
}
Mình cũng google tham khảo cách giải quyết thì mình có cách giải quyết sau:
Mã:
JNIEXPORT void JNICALL Java_DemoJNI_DemoJNI_PhuongThucThamSoMang (JNIEnv *env, jobject obj, jintArray ptr)
{
jsize len = (*env)->GetArrayLength(env, ptr); // Lỗi biên dịch // 23 C:\Users\\workspace\DemoJNI\src\DemoJNI\DemoJNI.cpp base operand of `->' has non-pointer type `JNIEnv_'
jint *body = (*env)->GetIntArrayElements(env, ptr, 0);
}
Mình dính cũng hơi bị lâu ở khúc này rồi, cứ tưởng JNI thì các mảng tham số có thể được gọi thông thường như arr[0] = 1 hay sao chứ [IMG]images/smilies/biggrin.png[/IMG]
View more random threads:
Giảm giá khi mua pallet nhựa Trà Vinh Tại Trà Vinh, một trong những địa điểm nổi tiếng với ngành nông nghiệp và sản xuất, pallet nhựa Trà Vinh đóng vai trò không thể phủ nhận trong quá trình vận...
Giảm giá khi mua pallet nhựa Trà...