最近工作项目中有一个功能模块用到了FlashCC,将C++的代码编译成swc文件,以便在Flash工程中使用。开发过程中遇到一些问题,现在记录下来,以便日后查阅。
一、开发环境搭建
说明:本文所使用的FlashCC版本为1.0.1, 操作系统为Windows7 Professional 32位
相对于FlashCC的前身Alchemy来说,FlashCC的开发环境搭建已经简化了许多,一些开发过程中依赖的组件已经默认集成到官方提供的定制Cygwin当中。首先需要注意最小系统需求,下面是官方给出的标准:
Flash Player 11 or higher
Flex SDK 4.6 or higher
Java Virtual Machine (64-bit)
Window平台需要:Microsoft® Windows® 7 (64-bit edition)
其中前两点必须要满足。至于后两点,我的开发机器用的是Win7 32位系统,装的Java虚拟机也是32位的,实际操作中也没有发现太大问题(不过建议有条件的话最好还是使用官方标准)。
了解基本需求后到各个网站上下载Flex SDK、JRE、FlashCC开发包(1.0.1版本),下载完成后继续下面的步骤:
1、解压FlexSDK(本文中解压路径为F:\Flex\flex_sdk_4.6)
2、安装JRE
3、添加或编辑系统环境变量
java_home C:\Program Files\Java\jdk1.7.0_02
Path %java_home%\bin
4、解压FlashCC开发包(已经内置了定制版的cygwin) (本文中解压路径为F:\Flash\FlasCC_1.0.1)
5、使用文本编辑器打开F:\Flash\FlasCC_1.0.1\samples\Makefile.common, 修改FLASCC及FLEX变量为下面的值:以便每次编译只需输入make就好
而不用带上很长的路径参数。
FLASCC:=/cygdrive/f/Flash/FlasCC_1.0.1/sdk
FLEX:=/cygdrive/c/flex
(说明:FLASCC=/cygdrive/你的flascc文件夹下面的sdk目录,FLEX=/cygdrive/你的FLEX SDK目录)
有些FLEX的目录一般默认都有空格,所以经常编译会报错,说路径不存在,所有最好把FLEX的SDK目录下的文件全部拷贝到根目录下,比如D:/sdk。
至此,FlashCC的开发环境就搭建好了,下面来尝试编译FlashCC开发包中自带的示例程序。
二、编译样例程序
直接运行F:\Flash\FlasCC_1.0.1\run.bat,切换工作目录到01_HelloWorld下:
注意:如果使用的是32位Java虚拟机,则需要修改一下01_HelloWorld下的Makefile, 在编译命令后加上-jvmopt=-Xmx1G
否则会报下面的错误:
“LLVM ERROR: Error: Unable to launch the Java Virtual Machine.
This usually means you have a 32bit JVM installed or have set your Java heap siz
e too large.
Try lowering the Java heap size by passing "-jvmopt=-Xmx1G" to gcc/g++.”
在cygwin窗口中输入make:
一切顺利的话,会在01_HelloWorld目录下多出hello.exe和hello.swf两个文件,使用FlashPlayer打开hello.swf,效果如下: