程序里用了skia库,结果在android4.0上无法运行
于是想把skia库编译成静态,再链接到我的库里
在cygwin下折腾很久,编译成功了,但是改了太多的东西,结果是无法运行
官方svn上下下来的源码无法编译,提示各种错误
于是尝试linux下编译
https://sites.google.com/site/skiadocs/user-documentation/quick-start-guides/android
根据上面链接,把trunk和android两个目录下下来
编译时提示各种头文件找不到,比如ft2build.h expat.h等等
于是把这些头文件下下来,但是还是提示很多错误,比如expat.h提示各种错误
实在没办法了,发帖求救
最好能在cygwin下编译求编译方法,越详细越好,先谢谢了

解决方案 »

  1.   

    2.3我是这么干的,但是4.0无法运行,应该是skia库改过了
    所以我要静态链接到我的库里面
      

  2.   

    既然没人回答,我就一步一步问吧
    现在重新开始编译
    第一个错误是
    jni/src/images/SkImageDecoder_libjpeg.cpp:64: error: ISO C++ forbids declaration
     of 'huffman_index' with no type
    搜遍整个工程也找不到huffman_index的定义
    求huffman_index定义
      

  3.   

    发现这个huffman_index在源码里没用到,我申明了一下可以了
    现在是
    jni/src/images/SkImageDecoder_libjpeg.cpp:59: error: 'jpeg_destroy_huffman_index
    ' was not declared in this scope
    jpeg_destroy_huffman_index是一个函数,我就不知道怎么改了
      

  4.   

    jni/src/images/SkImageDecoder_libjpeg.cpp:59: error: 'jpeg_destroy_huffman_index
    ' was not declared in this scope没有找到'jpeg_destroy_huffman_index这个函数, 应该是libjpeg里面的函数吧呵呵
      

  5.   

    昨天后来有事没弄了
    谢谢楼上的
    我在libjpeg里也找不到这个函数
    这是从官网上下的源码,应该先提示找不到相应头文件吧,没有提示说明就在包含的那些头文件里定义的
    但是那些头文件里都没有这个函数定义
      

  6.   

    x
    是我搞错源码了,编译的不知道哪里下的源码
    昨天编译官网svn上的源码通过了
    但是运行的时候出异常
    目前定位到SkFontHost_android.cpp里的init_system_fonts
    里面调用find_best_face(gDefaultFamily, SkTypeface::kNormal);
    此时的gDefaultFamily为空,导致find_best_face里的第一句SkTypeface* const* faces = family->fFaces;就出异常。
    ps:源码中gDefaultFamily的定义为static FamilyRec* gDefaultFamily;我改成static FamilyRec* gDefaultFamily = NULL;
    搜索所有源码发现只有一处地方为gDefaultFamily赋值,但是没调用到
    if (names == gDefaultNames) {
        gDefaultFamily = family;
    }
    求解答
      

  7.   

    SkFontHost_android.cpp改用SkFontHost_linux.cpp编译通过,能运行
    4.0也能运行,好开心
    .....可是所有文本都画不出来看来还得用SkFontHost_android.cpp