0

いくつかの 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);

これからもどうぞよろしくお願いいたします。

4

0 に答える 0