對於以下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連接器也會崩潰... –