расширение контекста не имеет метода

Я пытаюсь создать собственное расширение, написанное на C ++ для Adobe Flex проекта. Я дважды проверил все сто раз, но что бы я ни делал, я всегда получаю сообщение об ошибке «В контексте расширения нет метода с именем getHelloWorld».

Это мой код:

Класс ActionScript для Flash Builder:

package
{
import flash.events.EventDispatcher;
import flash.external.ExtensionContext;

public class QCARBridge extends EventDispatcher
{
private var extContext:ExtensionContext;

public function QCARBridge()
{
extContext = ExtensionContext.createExtensionContext("NativeQCAR", null);

if(!extContext) {
throw new Error("Extension context couldn't be created :(");
}
}

// Native methods
public function getTestString():String {
return extContext.call("getTestString") as String;
}

public function isSupported():int {
return extContext.call("isSupported") as int;
}

public function getHelloWorld():String {
return extContext.call("getHelloWorld") as String;
}
}
}

Flash Builder extension.xml:

<?xml version="1.0" encoding="UTF-8"?>
<extension xmlns="http://ns.adobe.com/air/extension/3.1">
<id>NativeQCAR</id>
<versionNumber>1</versionNumber>
<platforms>
<platform name="Windows-x86">
<applicationDeployment>
<nativeLibrary>libNativeQCAR.dll</nativeLibrary>
<initializer>initializer</initializer>
<finalizer>finalizer</finalizer>
</applicationDeployment>
</platform>
</platforms>
</extension>

и код C ++:

#include "main.h"#include "Stdlib.h"#include "String.h"
FREObject isSupported(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
FREObject result;

uint32_t isSupportedInThisOS = 1;

FRENewObjectFromBool( isSupportedInThisOS,  &result);

return result;
}

FREObject getTestString(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
FREObject result;

const char *str = "De android library zegt ook eens hallo...";
FRENewObjectFromUTF8(strlen(str)+1, (const uint8_t *)str, &result);

return result;
}

FREObject getHelloWorld(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
FREObject result;

const char *str = "Hello World!!  This is your DLL talking!";
FRENewObjectFromUTF8(strlen(str)+1, (const uint8_t *)str, &result);

return result;
}

void contextInitializer(void* extData, const uint8_t* ctxType, FREContext ctx, uint32_t* numFunctions, const FRENamedFunction** functions)
{
*numFunctions = 3;
FRENamedFunction* func = (FRENamedFunction*) malloc(sizeof(FRENamedFunction) * (*numFunctions));

func[0].name = (const uint8_t*) "getTestString";
func[0].functionData = NULL;
func[0].function = &getTestString;

func[1].name = (const uint8_t*) "isSupported";
func[1].functionData = NULL;
func[1].function = &isSupported;

func[2].name = (const uint8_t*) "getHelloWorld";
func[2].functionData = NULL;
func[2].function = &getHelloWorld;

*functions = func;
}

void contextFinalizer(FREContext ctx)
{
return;
}

void initializer(void** extData, FREContextInitializer* ctxInitializer, FREContextFinalizer* ctxFinalizer)
{
*ctxInitializer = &contextInitializer;
*ctxFinalizer = &contextFinalizer;
}

void finalizer(void* extData)
{
return;
}

Кажется, я правильно соединил все точки, но почему он не хочет работать?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …