I'm trying to use PB to create extension for Adobe Air (it's a dll),
i've already created similar extensions using C language, but run into issues with PB.
The problem is that functions (contextInitializer and contextFinilizer) passed to runtime are never called
FlashRuntimeExtensions.h
First, working C version (simplified):
Code: Select all
//only these 2 functions must be exported
__declspec(dllexport) void initializer(void** extData, FREContextInitializer* ctxInitializer, FREContextFinalizer* ctxFinalizer);
__declspec(dllexport) void finalizer(void* extData);
void contextInitializer(void* extData, const uint8_t* ctxType, FREContext ctx, uint32_t* numFunctions, const FRENamedFunction** functions)
{
*numFunctions = 0;
}
void contextFinalizer(FREContext ctx)
{
}
void initializer(void** extData, FREContextInitializer* ctxInitializer, FREContextFinalizer* ctxFinalizer)
{
//these 2 functions are successfully called when extension is initialized
*ctxInitializer = &contextInitializer;
*ctxFinalizer = &contextFinalizer;
}
void finalizer(void* extData)
{
}
Code: Select all
ProcedureDLL contextInitializer(*extData, *ctxType.s, *ctx, *numFunctions.u, *functions)
numFunctions.u = 0;
EndProcedure
ProcedureDLL contextFinalizer(*ctx)
EndProcedure
ProcedureCDLL initializer(*extData, *ctxInitializer, *ctxFinalizer)
//these 2 functions are never called :(
ctxInitializer = @contextInitializer()
ctxFinalizer = @contextFinalizer()
EndProcedure
ProcedureCDLL finalizer(*extData)
EndProcedure