Как использовать FRESetContextNativeData () в собственных расширениях AIR?

Я строю ANE. В одном из моих вызовов в нативный код создается объект, и я хотел бы иметь возможность сохранить его в памяти для ссылки в будущем вызове.

Я думал, что мог бы сделать это, создав указатель на объект, а затем передав этот указатель в FRESetContextNativeData (), как в примере ниже:

FREObject storeData(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
char* data = "testing...";
FRESetContextNativeData( ctx, &data );
return getFREString(data);
}

FREObject retrieveData(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
char* data;
FREGetContextNativeData(ctx, (void**)&data);
return getFREString(data);
}

Это, кажется, не работает, однако. В конце retrieveData (), data указывает на кучу случайности. Что дает?

0

Решение

Так что я немного идиот. Ошибка, которую я сделал, заключалась в & до data в моем вызове FRESetContextNativeData (). Для этого нужен только указатель, а не указатель на указатель типа FREGetContextNativeData ().

Следующий код дает ожидаемые результаты:

FREObject storeData(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
char* data = "testing..."FRESetContextNativeData( ctx, (void*)data );
return getFREString(data);
}

FREObject retrieveData(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
char *data;
FREGetContextNativeData(ctx, (void**)&data);
return getFREString(data);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector