15
2015
07

flascc问题:c函数如何直接访问Array

如题。

以下来自:http://bbs.9ria.com/forum.php?mod=viewthread&tid=174302&highlight=flasCC

使用valueOf之类的API。下面是我的代码,希望能给你些提示:
#include#include#include#include//using namespace AS3::local;

void testInCxx() __attribute__((used,
                annotate("as3sig:public function testInCxx(_data:Vector.):String"),
                annotate("as3package:Test")));

void testInCxx()
{
                //转换AS3的Vector.对象为C++ AS3::local::var 对象
                AS3::local::var _vec;
                AS3_GetVarxxFromVar( _vec , _data);

                //取出数组中的元素,并复制给Double型变量f
                double f = AS3::local::internal::double_valueOf(_vec[2]);

                //声明AS3的Number类型变量d
                AS3_DeclareVar(d, Number);

                //将C的double类型数值f复制到AS3的Number类型d中
                AS3_CopyScalarToVar(d, f);

                //将AS3的Number类型变量d返回给AS3,注意这里强制类型转换,返回值为String型
                AS3_ReturnAS3Var( d );
}

int main() 
{
                AS3_GoAsync();
}

上面的方法,测试没通过,生成swc直接报错了。思路应该没问题。有空再试试。


紧接前文(2015-7-16)。

经过不懈的努力,终于成功了。

参考:

http://bbs.9ria.com/thread-164329-1-1.html其实这篇帖子对于本问题没有帮助,以后肯定用的到。

http://licky3.rssing.com/chan-7810773/all_p1.html关键在于这篇。有用内容如下:

-lAS3++:如果使用了AS3/AS3++.h的类库,就需要加这个参数,不然编译会报错。

  • 06/08/13--01:02: 如何使FlasCC编译的SWC文件变小


  • 当我们使用默认的makefile编译参数的时候,使用FlasCC编译出来的swf或者swc文件都有点大

    但我们在maefile文件中增加一个编译参数可以使得文件体积变小不少,而且运行效率也好多很

     

    比如我自己编译的一个AStar文件,原来的有600多K,加上那个参数后只有400多K了

    而且在flash游戏中寻路时间从50ms以上到最多1ms,效率可见。

     

    下面是我的一个makefile配置参数,系统是32位win7系统

    T01: check
     "$(FLASCC)/usr/bin/g++" $(BASE_CFLAGS) -O4 AStar.cpp Main.cpp -emit-swc=AStar -o AStar.swc -lAS3++ -jvmopt=-Xmx1G
      
    include D:/FlasCC_1.0.1/samples/Makefile.common

    clean:
     rm -f *.swf *.swc *.bc *.exe

     

    说明:

    -O4 :这个参数太好了,使得文件体积大大减小

    -jvmopt=-Xmx1G :32位机器编译需要加的参数

    -lAS3++:如果使用了AS3/AS3++.h的类库,就需要加这个参数,不然编译会报错。

     

    还与其它一些参数可以参考下

    1、禁用调试信息

         Release编译时不要加上-g开关。

    2、使用-Os编译程序。

        不要使用-funroll-loops等可以加速程序执行但是会大大增加目标代码体积的开关。

    3、编译后的程序使用strip去除符号和偏移(限于可执行程序和共享库,其他易出问题) 

    4、如果你不需要RTTI,编译时加入-fno-rtti。

    5、如果你不需要处理C++异常,编译时加入-fno-exceptions。

    6、使用UPX之类的可执行程序压缩程序(只推荐用于可执行程序,用于其他也可,但是较浪费内存)。

顺便再提一下另一项很实用的内容:

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



« 上一篇下一篇 »

相关文章:

flascc:使用SWIG创建swc  (2015-7-20 14:28:51)

flascc:as与c相互传递数组  (2015-7-16 18:15:24)

使用flascc生成的swc  (2015-7-15 18:12:3)

flasCC  (2015-2-5 14:18:31)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。