2011-04-23 1 views
0

SDK의 stringecho.c 예제를 AS3 용으로 수정하고 컴파일하면 문제없이 사용할 수 있습니다. 내 자신의 앱 Flash Alchemy에서 빌드 된 .swc 라이브러리가 너무 작고 누락 된 기능

, 나는 수십 성공적으로 파일 및 링크 ++ g 컴파일 :

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

나는 myApp.swc을받을 수 있나요하지만 잘못에만 80K (간단한 stringecho 예와 같은 크기)입니다 .

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

이 myApp.swc이있는 stringecho.swc는 달리, 어떤 플래시 IDE에서 검토

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; 
    } 

답변

1

이 내용은 blog post입니다.

짧은 이야기는 .o 파일을 많이 연결하면 작동하지 않는다는 것입니다. 라이브러리 파일 (.a)에 'ar'을 함께 써야합니다. 그런 다음 해당 라이브러리에 대한 접착제 코드를 컴파일합니다. 예를 들면 다음과 같습니다.

ar rc mylib.a demo.o obj1.o obj2.o obj3.o 
ranlib mylib.a 
g++ -swc -o myApp.swc glue.c mylib.a 
+0

이 정보가 도움이 되었습니까? 그렇다면 내 대답을 대답으로 받아 들여주세요. – paleozogt