1.编写WinANE.dll:

#include <windows.h>

#include <stdlib.h>

#include <FlashRuntimeExtensions.h>

#pragma comment( lib, "FlashRuntimeExtensions.lib" )

FREObject test(FREContext ctx, void*funcData, uint32_t argc, FREObject argv[])
{

  const uint8_t* msg = (const uint8_t*)"hello world";

  FREObject retObj;

  FRENewObjectFromUTF8(strlen((const char*)msg)+1, msg, &retObj);

  return retObj;

}

void ContextFinalizer(FREContext ctx)

{
  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*)"test";

  func[0].functionData= NULL;

  func[0].function= &test;

  *functionsToSet= func;

}

extern "C" __declspec(dllexport) void ExtFinalizer(void* extData)
{
  return;
}

extern "C" __declspec(dllexport) void ExtInitializer(void** extDataToSet, FREContextInitializer* ctxInitializerToSet,

                          FREContextFinalizer*ctxFinalizerToSet)

{

  *extDataToSet= NULL;

  *ctxInitializerToSet= ContextInitializer;

  *ctxFinalizerToSet= ContextFinalizer;

}

2.编写 swc库:

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

  public class TestWinANE
  {
    private static var context:ExtensionContext;
    public function TestWinANE()
    {
      try
      {
        context= ExtensionContext.createExtensionContext("WinANE", "");
      }
      catch(e:Error)
      {

      }

    }

    public function print():String
    {
      var str:String = context.call("test") as String;
      return str;
    }
  }
}

使用如下命令编译:

acompc -compiler.debug=false -library-path+=D:/FlexSDK4.9.1 -external-library-path+=D:/FlexSDK4.9.1/frameworks/libs/framework.swc

-swf-version=20 -compiler.source-path ./ -include-sources ./ -output WinANE.swc

3.编写extension.xml:

<extension xmlns="http://ns.adobe.com/air/extension/3.7">
  <id>WinANE</id>
  <versionNumber>1.0.0</versionNumber>
  <platforms>
    <platform name="Windows-x86">
    <applicationDeployment>
      <nativeLibrary>WinANE.dll</nativeLibrary>
      <initializer>ExtInitializer</initializer>
      <finalizer>ExtFinalizer</finalizer>
      </applicationDeployment>
    </platform>
  </platforms>
</extension>

4.生成 WinANE.ane:

解压WinANE.swc,将library.swf与WinANE.swc和WinANE.dll,extension.xml放同一目录,执行如下命令:

  adt.bat -package -target ane WinANE.ane extension.xml -swc WinANE.swc -platform Windows-x86 library.swf WinANE.dll

5.修改使用ANE的应用程序的XML文件,添加如下段:

<supportedProfiles>extendedDesktop</supportedProfiles>

<extensions>
  <extensionID>WinANE</extensionID>
</extensions>

编写windows版ANE的更多相关文章

  1. 使用BSD socket编写Windows版的网络程序

    我们知道BSD Socket是标准的套接字规范,那么怎么在windows使用他们呢? 我们首先要引用<winsock2.h>和ws2_32.lib 然后,执行WSAStartup #ifd ...

  2. 开发QQ互联ios版Ane扩张 辛酸史

    来源:http://www.myexception.cn/operating-system/1451490.html 开发QQ互联ios版Ane扩展 辛酸史 开发QQ互联ios版Ane扩展辛酸史: 1 ...

  3. 如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目

    如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目 #1:前提准备 1.1 首先请确认你的电脑是windows10专业版或企业版,只有这 ...

  4. Android Studio2.0 教程从入门到精通Windows版 - 入门篇

    http://www.open-open.com/lib/view/open1468121363300.html 本文转自:深度开源(open-open.com)原文标题:Android Studio ...

  5. Zookeeper Windows版的服务安装和管理工具

    以前研究过负载均衡,最近正在项目上实施(从来没做过小项目以上级别的东西,哈).然后遇到了多个一模一样但是同时运行的服务.不同服务但依赖同相同的配置数据(前端网页服务:Nginx+IIS+nodejs. ...

  6. Nginx Windows版的服务安装和管理工具

    以前研究过负载均衡,最近正在项目上实施(从来没做过小项目以上级别的东西,哈),nginx挺好,不过Windows有点为难,小流量和本地不追求性能,简单易用是目标. Nginx Windows上并没有提 ...

  7. elasticsearch 2.4 windows版jvm内存设置

    本文编写目的是因为网上有很多es修改内存配置的文章,方法也各有不同,但在我的情况下(es 2.4 windows版)发现很多方法都是无效的,有效只有以下方法 第一个是xms,第二个是xmx

  8. HUSTOJ的Windows版评判内核(限制内存使用)

    HUSTOJ的Windows版评判内核(一) 作者:游蓝海 个人主页:http://blog.csdn.net/you_lan_hai 2013.4.9 注:最新版本项目地址:https://gith ...

  9. Java程序员的现代RPC指南(Windows版预编译好的Protoc支持C++,Java,Python三种最常用的语言,Thrift则支持几乎主流的各种语言)

    Java程序员的现代RPC指南 1.前言 1.1 RPC框架简介 最早接触RPC还是初学Java时,直接用Socket API传东西好麻烦.于是发现了JDK直接支持的RMI,然后就用得不亦乐乎,各种大 ...

随机推荐

  1. eclipse闪退

    svn提交我的项目时,由于网络故障,提交不上去,一直checking.......,然后我强制关闭eclipse后重启,发现启动不了了,一点击,尝试打开的状态就突然没了,试了几次都这样,重启电脑打开还 ...

  2. [原创]java WEB学习笔记101:Spring学习---Spring Bean配置:IOC容器中bean的声明周期,Bean 后置处理器

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. 如何关闭windows电脑的开机自启程序

    很多时候我们打开电脑会发现,莫名其妙的出现一些已经在运行的程序了,这都是一些开机自启的软件之类的.可能你的电脑配置本来就不怎么高,开机还这样,那估计会很卡顿,那有什么方法可以关闭这些开机自动启动的程序 ...

  4. Yii2.0中文开发向导——Where条件查询全解析

    在Yii的Model里进行查询的时候 where是必不可少的.Where方法声明为 static where( $condition ) 其中参数 $condition类型为字符串或者数组 1.字符串 ...

  5. Oracle常用日期函数

    常用的时间格式掩码如下:掩码元素       含义YYYY           四位数年份 (如:2005)     yearYY             二位数年份(如  05) Q         ...

  6. 鸟哥的linux私房菜学习记录之系统设定工具与硬件检测

    这部分没啥用,就不记录了,关于服务器的在服务器篇

  7. [python]WindowsError的错误代码详解

    转自:http://www.aichengxu.com/view/46906 WindowsError的错误代码详解 0操作成功完成. 1功能错误. 2系统找不到指定的文件. 3系统找不到指定的路径. ...

  8. Java判断访问设备为手机、微信、PC工具类

    package com.lwj.util; import javax.servlet.http.HttpServletRequest; /** * 判断访问设备为PC或者手机--工具类 * * @de ...

  9. ifconfig

    虚拟机启动后发现ifconfig命令下,没有打印ip .用ifconfig eth0 up命令开启下网卡. #ifconfig eth0 up .更改eth0配置: #vi/etc/sysconfig ...

  10. Oracle logmnr工具分析日志脚本

    在oracle:对logmnr工具分析日志这个不陌生:对数据恢复应用场景经常用到:这里为了方便对归档日志进行分析: 当然网上有一个logmnr界面的工具:感觉很人性化:下载需要积分:为此写一个脚本. ...