2012年6月29日金曜日

.aファイルを作成する

CocoaTouchStaticLibraryを使用します。
下記ソース FlashRuntimeExtensions.hをインクルードします。
このファイルはFlashBuilder4.6includeディレクトリにあります。 
例)/Applications/Adobe Flash Builder 4.6/sdks/air3_3/include
HelloWorldANE.h
一行目の表示は#import <Foundation/Foundation.h>になります。
#import 
#import "FlashRuntimeExtensions.h"

@interface HelloWorldANE : NSObject

@end

FREObject GetHelloWorld(
                        FREContext ctx,
                        void* funcData,
                        uint32_t argc,
                        FREObject arg[]
                        );

void ContextInitializer(
                        void* extData,
                        const uint8_t* ctxType,
                        FREContext ctx,
                        uint32_t* numFunctionsToTest,
                        const FRENamedFunction** functionsToSet
                        );

void ContextFinalizer(FREContext ctx);

void ExtInitializer(
                    void** extDataToSet,
                    FREContextInitializer* ctxInitializerToSet,
                    FREContextFinalizer* ctxFinalizerToSet
                    );

void ExtFinalizer(void* extData);
HelloWorldANE.m
#import "FlashRuntimeExtensions.h"
#import "HelloWorldANE.h"

@implementation HelloWorldANE

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }
    
    return self;
}

@end

FREObject GetHelloWorld(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) {
    
    const char *str = "HelloWorld";
    
    FREObject retStr;
    FRENewObjectFromUTF8(strlen(str)+1, (const uint8_t *)str, &retStr);

    return retStr;
}

void ContextInitializer(void* extData, const uint8_t* ctxType, FREContext ctx,
                        uint32_t* numFunctionsToTest, const FRENamedFunction** functionsToSet) {
    *numFunctionsToTest = 1;
    FRENamedFunction* func = (FRENamedFunction*)malloc(sizeof(FRENamedFunction)*1);
    func[0].name = (const uint8_t*)"GetHelloWorld";
    func[0].functionData = NULL;
    func[0].function = &GetHelloWorld;
    
    *functionsToSet = func;
}

void ContextFinalizer(FREContext ctx) {
    return;
}

void ExtInitializer(void** extDataToSet, FREContextInitializer* ctxInitializerToSet,
                    FREContextFinalizer* ctxFinalizerToSet) {
    *extDataToSet = NULL;
    *ctxInitializerToSet = &ContextInitializer;
    *ctxFinalizerToSet = &ContextFinalizer;
}

void ExtFinalizer(void* extData) {
    return;
}

0 件のコメント:

コメントを投稿