いくつかの Jni ブリッジを変換しようとするのは初めてです。ただし、一部のデータ型を変換するときに問題が発生します。
最初のものは、この自動生成されたヘッダーに関連しています。
再コンパイルしようとするたびに (元の .pas ファイルがないと、コンパイルできなくなります (IDE の制限))、次の行にいくつかのエラーが表示されます。
/* TJavaImport.Create */ inline __fastcall TJToast(void * ID, void * ClsID, Androidapi::Jnibridge::TJavaVTable* VTable) : Androidapi::Jnibridge::TJavaGenericImport__2<_di_JToastClass,_di_JToast> (ID, ClsID, VTable) { }
エラー:
[bccaarm エラー] Androidapi.JNI.Toast.hpp(76): 'Androidapi::Jnibridge::TJavaGenericImport__2<_di_JToastClass, _di_JToast>' の初期化に一致するコンストラクターがありません Androidapi.JNIBridge.hpp(197): 実行可能な候補コンストラクターがありません: 必要です0 個
の引数が提供されましたが、3 個が提供されました
もう一つは関連している
getBonded() が既に実装されているライブラリを使用していましたが、.pas ファイルを使用できなくなったら、手動で実装する必要があるため、次のように取得しました。
void getBonded(TStringList* res){
JBluetoothAdapter* x;
JSet* externalDevices;
JIterator* it;
JBluetoothDevice* o;
JBluetoothDevice* remote;
JBluetoothSocket* xx;
x = TJBluetoothAdapter::JavaClass->getDefaultAdapter();
externalDevices = x->getBondedDevices();
it = externalDevices->iterator();
while (it->hasNext()){
o = TJBluetoothDevice::Wrap(it->next()::ILocalObject::GetObjectID());
res->Add(JStringToString(o->getName())+"="+JStringToString(o->getAddress()));
}
}
しかし、次の行でエラーが発生します。
o = TJBluetoothDevice::Wrap(it->next()::ILocalObject::GetObjectID());
エラー:
[bccaarm エラー] Main.cpp(2423): 予期される ';' 宣言の最後に [bccaarm エラー] Main.cpp(2424): 'Wrap' の呼び出しがあいまいです
Androidapi.JNIBridge.hpp(187): 候補関数
Androidapi.JNIBridge.hpp(188): 候補関数
したがって、最後のものを次のように変更しました(ただし、まだテストしていません):
o = TJBluetoothDevice::Wrap(it->next()->IJavaInstance);
これからもどうぞよろしくお願いいたします。