2011/09/22 15:26
첫 번째 단계라고하는 것으로, 관례의 HelloWorld라는 문자를 생성하는 Native Extension을 만듭니다.
1. VS C + +에서 DLL을 만들 준비를합니다.
이번에는 VS C + + 2010로 만듭니다.
새 프로젝트> Win 32 응용 프로그램 마법사에서 DLL을 만듭니다.
프로젝트의 편지지가 생성되면
AIR 3 HOME / include / FlashRuntimeExtensions.h
AIR 3 HOME / lib / win / FlashRuntimeExtensions.lib
을 참조하거나, 프로젝트 폴더에 복사합니다.
준비
2. stdafx.h에 include 함수 정의 <br /> 다음을 추가합니다.
함수는 extern "C"__declspec (dllexport)를 사용합시다
extern "C": C 언어 형식의 함수로 정의
__declspec (dllexport) : DLL에서 내보낼 수 함수 정의
#include "FlashRuntimeExtensions.h" //반드시필요함//초기화시 호출되는 함수extern "C" __declspec(dllexport) void ExtInitializer( void** extDataToSet, FREContextInitializer* ctxInitializerToSet, FREContextFinalizer* ctxFinalizerToSet);//삭제시 호출되는 함수extern "C" __declspec(dllexport) void ExtFinalizer( void* extData3. 초기화 함수 ExtInitializer 구현
API에서 추측하면 컨텍스트 초기화 및 소멸시 함수의 포인터를 등록해야.
__declspec(dllexport) void ExtInitializer( void** extDataToSet, FREContextInitializer* ctxInitializerToSet, FREContextFinalizer* ctxFinalizerToSet) { *extDataToSet = NULL; *ctxInitializerToSet = &ContextInitializer; //context 초기화 함수 *ctxFinalizerToSet = &ContextFinalizer; //contect 제거할때 함수
특별히 아무것도하지 않는다.
__declspec(dllexport) void ExtFinalizer(void* extData) { return;5. 컨텍스트의 초기화 함수 ContextInitializer 구현
이 함수는 포인터 참조이므로 C 언어 형식의 필요 없음.
함수의 인수는 FREContextInitializer 정의대로합니다.
컨텍스트 함수를 명명하고 등록하는 데 필요한.
FRENamedFunction에서 등록할 수 함수는 포인터이므로 C 언어 형식이 아닌 함수를등록합니다.
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; //불리는 함수 FREFunction포인터 *functionsToSet = func;6. 컨텍스트를 제거할 때 함수 ContextFinalizer 구현
특별한건 없다.
void ContextFinalizer(FREContext ctx) {return;7. GetHelloWorld 함수 구현
GetHelloWorld 함수를 구현합니다.
인수는 FREFunction 형식에 맞춥니다.
FREObject GetHelloWorld( FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) { const uint8_t* msg = (const uint8_t*)"Hello World"; FREObject retObj; //문자열에서 FREObject를 만드는 함수 AS로 취급할 문자열 FRENewObjectFromUTF8(strlen((const char*)msg)+1, msg, &retObj); return retObj;8. 컴파일
오류해야 Native Extension의 DLL이 완성입니다! ??
dll참고
'Flex, Flash, AIR' 카테고리의 다른 글
| AIR 3 Native Extension 7 Try Develop HelloWorld ANE SWC (0) | 2011/09/22 |
|---|---|
| AIR 3 Native Extension 6 Try Develop HelloWorld ANE DLL (0) | 2011/09/22 |
| AIR 3 Native Extension 5 ExtensionContext (0) | 2011/09/22 |
| AIR 3 Native Extension 4 Native C API Reference (0) | 2011/09/22 |
| AIR 3 Native Extension 3 Platforms (0) | 2011/09/22 |
| AIR 3 Native Extension 2 ANE (0) | 2011/09/22 |
