如何在AIR本机扩展中使用FRESetContextNativeData()

How do I use FRESetContextNativeData() in AIR native extensions?

本文关键字:FRESetContextNativeData 扩展 AIR 本机      更新时间:2023-10-16

我正在构建一个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指向一堆随机性。什么东西?

所以我有点白痴。在对FRESetContextNativeData()的调用中,我犯的错误是将&放在data之前。这只需要一个指针,而不是指向像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);
}
相关文章:
  • 没有找到相关文章