Не удалось создать консоль с встраиваемой VFS из-за "вызова возможно неопределенного метода"

Сначала я создал встроенную виртуальную файловую систему, как описано здесь.

Он генерирует этот код AS:

package C_Run {}
package com.adobe.flascc.vfs {

    import com.adobe.flascc.vfs.*;
    import com.adobe.flascc.BinaryData

    public class myvfs extends InMemoryBackingStore {

        public function myvfs() {
            addDirectory("/data")
            addFile("/data/localization.en.afgpack", new     C_Run.ALC_FS_6D79766673202F646174612F6C6F63616C697A6174696F6E2E656E2E6166677061636B)
            addFile("/data/dataAudio.afgpack", new     C_Run.ALC_FS_6D79766673202F646174612F64617461417564696F2E6166677061636B)
            addFile("/data/data.afgpack", new     C_Run.ALC_FS_6D79766673202F646174612F646174612E6166677061636B)
        }    
    }
}

Он составлен в myvfs.abc, Затем я пытаюсь создать пользовательскую консоль с этим VFS. Я импортировал myvfs в Console.as:

import com.adobe.flascc.vfs.myvfs;

И создал объект VFS:

var my_vfs_embedded:InMemoryBackingStore = new myvfs(); 

Итак, проблема в том, что компиляция Console.abc иногда терпит неудачу с ошибкойCall to a possibly undefined method myvfs"и иногда успешно собирается с тем же кодом. Как это может быть?

Console.abc построен этой командой:

cd ./../../Engine/library/baselib/sources/flash &&  \
     java -jar $(FLASCC_FOR_EXT)/usr/lib/asc2.jar -merge -md -AS3 -strict -optimize \
    -import $(FLASCC_FOR_EXT)/usr/lib/builtin.abc \
    -import $(FLASCC_FOR_EXT)/usr/lib/playerglobal.abc \
    -import $(GLS3D_ABS)/install/usr/lib/libGL.abc \
    -import $(FLASCC_FOR_EXT)/usr/lib/ISpecialFile.abc \
    -import $(FLASCC_FOR_EXT)/usr/lib/IBackingStore.abc \
    -import $(FLASCC_FOR_EXT)/usr/lib/IVFS.abc \
    -import $(FLASCC_FOR_EXT)/usr/lib/InMemoryBackingStore.abc \
    -import $(FLASCC_FOR_EXT)/usr/lib/AlcVFSZip.abc \
    -import $(FLASCC_FOR_EXT)/usr/lib/CModule.abc \
    -import $(FLASCC_FOR_EXT)/usr/lib/C_Run.abc \
    -import $(FLASCC_FOR_EXT)/usr/lib/BinaryData.abc \
    -import $(FLASCC_FOR_EXT)/usr/lib/PlayerKernel.abc \
    -import $(BUILD_FULL_PATH)/myvfs.abc \
    Console.as -outdir $(BUILD_FULL_PATH) -out Console

2 ответа

Решение

Похоже, моя VFS была слишком большой для компилятора. Когда я беру меньше данных, все было в порядке. Итак, я полагаю, это была ошибка в компиляторе.

myvfs.abc находится по адресу BUILD_FULL_PATH, намекая на то, что он может быть собран одновременно с Console.as. Если порядок сборки не полностью предсказуем, бинарный файл myvfs.abc может находиться в неопределенном состоянии при компиляции Console.as. Это может произойти, если, например, вы создаете myvfs.as и Console.as как разные независимые цели и используете многопоточный параметр в make (-j).

Другие вопросы по тегам