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

时间:2013-08-15 16:16:07

标签: c++ actionscript air native

我正在建立一个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指向一堆随机性。是什么赋予了?

1 个答案:

答案 0 :(得分:0)

所以我有点白痴。我犯的错误是在调用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);
}