对于以下 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/