2011-10-29 33 views
20

Tôi cố gắng để thực hiện một chức năng trong Java (từ C) có chữ ký sau đây:JNI: Đi qua nhiều tham số trong chữ ký chức năng cho GetMethodID

public void execute(int x, int y, int action); 

Vấn đề của tôi là xác định chữ ký chức năng trong GetMethodID :

env->GetMethodID(hostClass, "execute", "(I;I;I;)V"); 

vấn đề tôi ma nhận được là:

W/dalvikvm(1849): Bogus method descriptor: (I;I;I;)V 
W/dalvikvm(1849): Bogus method descriptor: (I;I;I;)V 
D/dalvikvm(1849): GetMethodID: method not found: Lcom/device/client/HostConnection;.execute:(I;I;I;)V 

tôi không chắc chắn ho w để xác định chữ ký phương thức trong GetMethodID (cho 3 số nguyên làm tham số). Tôi thấy mọi người sử dụng ";" để phân tách các tham số trong các bài viết khác cho lớp String và File, nhưng không có gì với các số nguyên thủy như số nguyên.

Cách chính xác để thực hiện việc này là gì?

Cảm ơn bạn.

Trả lời

48

Theo điều này file bạn nên sử dụng chữ ký (III)V. Chỉ khi bạn cần chỉ định lớp học đủ điều kiện, bạn nên sử dụng ';', như Ljava/lang/String;.

+0

Cảm ơn rất nhiều! Bạn đã giúp tôi giải quyết vấn đề của tôi, cảm ơn bạn! – Jary

+0

Đó là một liên kết thực sự hữu ích để giải quyết mọi vấn đề của JNI, cảm ơn bạn! –

+0

Nếu là khoảng trống công khai (Chuỗi x, int y); ? (Ljava/lang/String; I) V? Lỗi .... – zszen

Các vấn đề liên quan