Я впервые пытаюсь преобразовать некоторые мосты 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 Error] Androidapi.JNI.Toast.hpp (76): нет соответствующего конструктора
для инициализации
«Androidapi :: Jnibridge :: TJavaGenericImport__2<_di_JToastClass,
_di_JToast> ‘Androidapi.JNIBridge.hpp (197): конструктор-кандидат недопустим: требуется 0 аргументов, но предоставлено 3
Androidapi.JNIBridge.hpp (174): конструктор-кандидат (неявный
конструктор копирования) нежизнеспособен: требуется 1 аргумент, но предоставлено 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 Error] Main.cpp (2423): ожидается ‘;’ в конце декларации
[bccaarm Error] Main.cpp (2424): вызов ‘Wrap’ неоднозначен
Androidapi.JNIBridge.hpp (187): функция-кандидат
Androidapi.JNIBridge.hpp (188): функция-кандидат
Поэтому я изменил последний на (но еще не тестировал):
o = TJBluetoothDevice::Wrap(it->next()->IJavaInstance);
С тех пор, большое спасибо;
Задача ещё не решена.
Других решений пока нет …