将C++编译为Flash可用的swc

下载crossbridge编译器套件

注意操作系统是Windows
这个编译器本来是adobe公司开发的,叫flascc,后来adobe将其开源,叫crossbridge
再后来adobe放弃了对它的维护,现在由社区进行维护,还叫crossbridge
我使用的是adobe手上的最后一个版本,crossbridge 1.0.1
github地址
下载地址,下载那个zip包就好了
社区维护的crossbridge的github地址,仅供参考

安装其他依赖

接下来的步骤我是参考adobe flascc的帮助文档

  • 安装64位的Java,不能是32位的,Java7或Java8都可以
  • 下载flex sdk 4.6或以上,这个链接是4.6的(FlashBuilder中应该带有flex sdk,如果有就不必再下载)
  • 下载debug版本的flash player(当你需要用gdb调试程序时才需要)

启动crossbridge的Cygwin环境

解压crossbridge的zip包,双击其中的run.bat,就能启动了
默认是在sample目录下的,你可以进入其中某个sample编译运行了

shellcd 01_HelloWorld
make FLASCC=/cygdrive/c/flascc/sdk FLEX=/cygdrive/c/flex_sdk

编译为swc

我们可以参考sample目录中的05_SWC
需要写一个wrapper,参考我写的
AS3/AS3.h中的api可参考这个

#include <cstdlib>
#include <string>
#include "AS3/AS3.h"
#include "AES.h"

void encrypt() __attribute__((used,
    annotate("as3sig:public function encrypt(text:String):String"),
    annotate("as3package:com.qunhe.instdeco.diy.flashutil.aes")));

void encrypt()
{
    char *cstr = NULL;
    AS3_MallocString(cstr, text);
    int len = strlen(cstr);
    std::string str(cstr, cstr+len);
    free(cstr);

    std::string enc = AES::encrypt(str);

    AS3_DeclareVar(result, String);
    AS3_CopyCStringToVar(result, enc.c_str(), enc.length());
    AS3_ReturnAS3Var(result);
}

void decrypt() __attribute__((used,
    annotate("as3sig:public function decrypt(text:String):String"),
    annotate("as3package:com.qunhe.instdeco.diy.flashutil.aes")));

void decrypt()
{
    char *cstr = NULL;
    AS3_MallocString(cstr, text);
    int len = strlen(cstr);
    std::string str(cstr, cstr+len);
    free(cstr);

    std::string dec = AES::decrypt(str);

    AS3_DeclareVar(result, String);
    AS3_CopyCStringToVar(result, dec.c_str(), dec.length());
    AS3_ReturnAS3Var(result);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值