FlashRuntimeExtensions.hとFlashRuntimeExtensions.libを用意します。
この2つのファイルは、FlashBuilder4.5インストールディレクトリの中にあります。
FlashRuntimeExtensions.h
例)C:\Program Files\Adobe\Adobe Flash Builder 4.5\sdks\air3.0r1\include
FlashRuntimeExtensions.lib
例)C:\Program Files\Adobe\Adobe Flash Builder 4.5\sdks\air3.0r1\lib\win
DLLの作成
1.Win32プロジェクトを選択後、アプリケーションの種類からDLLを選択します。
2.プロジェクト名は、ANEConnectで作成します。
3.ソリューションエクスプローラより、FlashRuntimeExtensions.hとFlashRuntimeExtensions.libを
インクルードします。
4.stdafx.hに#include "FlashRuntimeExtensions.h"をインクルードします。
// stdafx.h : 標準のシステム インクルード ファイルのインクルード ファイル、または // 参照回数が多く、かつあまり変更されない、プロジェクト専用のインクルード ファイル // を記述します。 // #pragma once #include "targetver.h" #define WIN32_LEAN_AND_MEAN // Windows ヘッダーから使用されていない部分を除外します。 // Windows ヘッダー ファイル: #include <windows.h> // TODO: プログラムに必要な追加ヘッダーをここで参照してください。 #include "FlashRuntimeExtensions.h"
5.dllmain.cppに処理を記述します。
// dllmain.cpp : DLL アプリケーションのエントリ ポイントを定義します。
#include "stdafx.h"
#include <stdlib.h>
#include <string.h>
extern "C" __declspec(dllexport) void ExtInitializer(
void** extDataToSet,
FREContextInitializer* ctxInitializerToSet,
FREContextFinalizer* ctxFinalizerToSet
);
extern "C" __declspec(dllexport) void ExtFinalizer(
void* extData
);
void ContextInitializer(
void* extData,
const uint8_t* ctxType,
FREContext ctx,
uint32_t* numFunctionsToTest,
const FRENamedFunction** functionsToSet
);
void ContextFinalizer(FREContext ctx);
FREObject getParameter(
FREContext ctx,
void* funcData,
uint32_t argc,
FREObject argv[]
);
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
__declspec(dllexport) void ExtInitializer(
void** extDataToSet,
FREContextInitializer* ctxInitializerToSet,
FREContextFinalizer* ctxFinalizerToSet
) {
*extDataToSet = NULL;
*ctxInitializerToSet = &ContextInitializer;
*ctxFinalizerToSet = &ContextFinalizer;
}
__declspec(dllexport) void ExtFinalizer(void* extData) {
return;
}
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*)"getParameter";
func[0].functionData = NULL;
func[0].function = &getParameter;
*functionsToSet = func;
}
void ContextFinalizer(FREContext ctx) {
return;
}
FREObject getParameter(
FREContext ctx,
void* funcData,
uint32_t argc,
FREObject argv[]
) {
FREObject retObj;
FREResult result;
uint32_t len;
const uint8_t* message;
char sendMessage[128] = "ANEConnect from ";
len = strlen((const char*)argv[0])+1;
result = FREGetObjectAsUTF8(argv[0],&len,&message);
strcat_s(sendMessage,128,(const char*)message);
FRENewObjectFromUTF8(128,(const uint8_t*)sendMessage,&retObj);
return retObj;
}
6.ソリューションのビルドを行い、ANEConnect.dllを作成します。
How i can use unicode string with FRENewObjectFromUTF8(128,(const uint8_t*)sendMessage,&retObj);
返信削除Regards.
There are no "FRENewObjectFromUnicode"
返信削除After the conversion to UTF-8 UNICODE, FRENewObjectFromUTF8 How do you use to?