对于以下C++和ActionScript3的代码,当getBytes2
方法被称为我的AIR应用程序崩溃。这是为什么发生?解决方案建议将不胜感激。生产可变长度的ByteArray为AIR本地扩展
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;
}
我没有收到任何错误,AIR Debugger在〜1秒后冻结。对于本机扩展的AS3端和示例AIR应用程序,我使用的是Flash Builder 4.6。对于C++端我使用VS2010。我可以附加调试器。我想知道为什么会出现这种情况,因为我使用的代码与您在as3-arduino连接器上使用的代码几乎相同... –
错误确实是由于memcpy函数造成的,并且当输入bytearray较小时比得到的字节阵列,但与逻辑as3-arduino连接器也会崩溃... –