0

SDK の stringecho.c の例を AS3 用に変更してコンパイルしても問題ありません。

私自身のアプリでは、g++ で数十個のファイルを正常にコンパイルし、リンクします。

g++ -swc -o myApp.swc glue.o demo.o obj1.o obj2.o obj3.o

myApp.swc を取得しますが、誤って 80k しかありません (単純な stringecho の例と同じサイズです)。

任意のフラッシュ IDE で調べると、stringecho.swc とは異なり、

cmodule.stringecho.AlchemyBlock 
cmodule.stringecho.AlchemyBreakPoint
...

この myApp.swc には

cmodule.AlchemyBlock
cmodule.AlchemyBreakPoint
...

そして、私が定義した接着機能はありません。本質的に、AS3 プロジェクトでは使用できません。

私のglue.cコードは以下です。基本的に、デモ オブジェクトを作成し、その関数を呼び出します。デモ クラスは、他のすべてのオブジェクト ファイルをカプセル化します。

#include "demo.h"
#include "AS3.h"
    AS3_Val InitSystem(void* self, AS3_Val args)
    {
        demo = new demo9();
        return 0;
    }

    AS3_Val LoadSceneFile( void* self, AS3_Val args )
    {
        demo->loadScene("scene.txt");
        return 0;
    }

...

    int main()
    {
        AS3_Val InitSystemMethod = AS3_Function( NULL, InitSystem );
        AS3_Val LoadSceneFileMethod = AS3_Function( NULL, LoadSceneFile );
        AS3_Val getAlchemyScreenMethod = AS3_Function( NULL, getAlchemyScreen );
        AS3_Val setMouseStateMethod = AS3_Function( NULL, setMouseState );
        AS3_Val rasterizeMethod = AS3_Function( NULL, rasterize );

        AS3_Val result = AS3_Object("InitSystem: AS3ValType,LoadSceneFile: AS3ValType,getAlchemyScreen:AS3ValType,setMouseState:AS3ValType,rasterize:AS3ValType"
                                    ,InitSystemMethod,
                                    LoadSceneFileMethod,
                                    getAlchemyScreenMethod,
                                    setMouseStateMethod,
                                    rasterizeMethod);

        AS3_Release( InitSystemMethod );
        AS3_Release( LoadSceneFileMethod );
        AS3_Release( getAlchemyScreenMethod );
        AS3_Release( setMouseStateMethod );
        AS3_Release( rasterizeMethod );

        AS3_LibInit( result );

        return 0;
    }
4

1 に答える 1

1

このブログ投稿を読んでください。

簡単に言うと、多数の .o ファイルをリンクしてもうまくいきません。それらをまとめてライブラリ (.a) ファイルにする必要があります。次に、そのライブラリに対してグルー コードをコンパイルします。あなたの例では、次のようになります。

ar rc mylib.a demo.o obj1.o obj2.o obj3.o
ranlib mylib.a
g++ -swc -o myApp.swc glue.c mylib.a
于 2011-05-01T18:40:44.197 に答える