【问题标题】:How do I use FRESetContextNativeData() in AIR native extensions?如何在 AIR 本机扩展中使用 FRESetContextNativeData()?
【发布时间】:2013-08-15 16:16:06
【问题描述】:

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

【问题讨论】:

    标签: c++ actionscript air native


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-06-06
      • 2018-03-06
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      • 2012-02-17
      相关资源
      最近更新 更多