jniを使ってandroidからcocosへcallbackする処理を記述してるのですがエラーが出ます。
cpp
1JNIEXPORT void JNICALL Java_jp_co_sample_SampleActivityBridge_onSampleLoaded(JNIEnv *env, jclass clazz, jobjectArray jsampleInits) 2 { 3jclass jsampleInit = (jclass)env->GetObjectArrayElement(jsampleInits, 0); 4jfieldID var = env->GetFieldID(jsampleInit, "name", "Ljava/lang/String;"); 5jstring jstr = (jstring)env->GeCCtObjectField(jsampleInit, var);
jsampleInitはLjp/co/sample/sampleInit/SampleInit;の型になります。
エラー
JNI WARNING: jclass arg has wrong type (expected Ljava/lang/Class;, got Ljp/co/sample/sampleInit/SampleInit;) (GetFieldID) 04-06 18:14:52.198 26400-26400/jp.co.sample W/dalvikvm: in Ljp/co/sample/SampleActivityBridge;.onSamplesLoaded:([Ljp/co/sample/SampleInit;)V (GetFieldID)
一行目のjsampleInitの型がjclassだとエラーが出るっぽいのですが、
以下のようなコードもネット検索すると見つかり、jclassで問題ないかと思ったのですが、以下コードは問題なくじっこうできます、上記のように書くとエラーになるようです。
jclass cls = env->FindClass("jp/co/sample/SampleInit");
ここのJNI Types一覧から妥当な型はjclassのみでした。
http://stnguyen.com/cocos2d-x/call-cpp-functions-from-java.html
jclassの部分を別の型にすればいいと思うのですが、カスタムのクラスの型がかければいいのですが、どう書くのでしょうか?
知ってる方教えてほしいです
==追記A 2017/4/7 16:06 start==
Cocos側の入れ物として以下を定義しました。
Classes/CCSampleInit.h
cpp
1class CCSampleInit 2{ 3public: 4 const char* name = ""; 5 int valule = 0; 6};
Classes/CCSampleInit.cpp
USING_NS_CC; CCSampleInit* CCSampleInit::create() { return new CCSampleInit(); }
==追記A end==
==追記B 2017/4/7 16:12 start==
public class SampleActivityBridge { private static Activity mActivity; public static native void onSampleInitsLoaded(SampleInit[] sampleInits); @Override public void onSampleInitsLoaded(SampleInit[] sampleInits) { SampleInitActivityBridge.onSampleInitsLoaded(sampleInits); }
==追記B end==

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/07 03:40 編集
2017/04/07 03:53
2017/04/07 06:54 編集
2017/04/07 06:42 編集
2017/04/07 07:00
2017/04/07 07:14 編集
2017/04/07 07:16
2017/04/07 07:44
2017/04/07 07:46 編集
2017/04/07 09:34
2017/04/07 09:37