c++ - 通过 C++ 为 AIR native 扩展生成可变长度的字节数组

标签 c++ actionscript-3 air

对于以下 C++ 和 ActionScript3 代码,我的 AIR 应用程序在调用 getBytes2 方法时崩溃。为什么会这样?解决方案建议将不胜感激。

C++代码:

FREObject getBytes2(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
    FREObject result;
    FREByteArray actualBytes;

    FREAcquireByteArray(argv[0], &actualBytes);
    uint8_t* nativeString = (uint8_t*) "Hello World from C++"; 
    memcpy(actualBytes.bytes, nativeString, sizeof(nativeString));

    FREReleaseByteArray(&actualBytes);

    FRENewObjectFromBool(1, &result);
    return result;
}

ActionScript3 代码:

    public function getBytes2():ByteArray {
        var ba:ByteArray = new ByteArray();
        this._ExtensionContext.call("getBytes2", ba);
        ba.position = 0;
        return ba;
    }

最佳答案

参见 FREImageProcessor.cpp有关动态设置长度的工作示例。基本上,您可以像在 ActionScript 中一样设置长度。

FREObject length;
FRENewObjectFromUint32(sizeof(nativeString), &length);
FRESetObjectProperty(argv[0], (const uint8_t*) "length", length, NULL);

关于c++ - 通过 C++ 为 AIR native 扩展生成可变长度的字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8407897/

相关文章:

actionscript-3 - Actionscript3/Adobe AIR 的 PDF 解析器库

actionscript-3 - actionscript 3 中的预加载器 - getDefinition() 上的引用错误

ios - ANE、iOS 和 BitmapData

actionscript-3 - 在AS3 TextField中使用嵌入式字体时,可以使用非嵌入式后备字体吗?

c++ - 是否有任何可用的操作/围栏比发布弱但仍提供同步语义?

C++ 在多个文件中包含一个文件

apache-flex - Flex 中文本的高度

sqlite - 从Adobe AIR应用程序更新本地sqlite数据库

c++ - 代码块和 g++ 错误 "is private"

c++ - 错误 : invalid cast from string to double. 如何从字符串转换为 double ?