• NDK编译FreeImage


    参考了 以下2篇文章 并作了一小点修改


    http://recursify.com/blog/2013/05/25/building-freeimage-for-android

    http://blog.sina.com.cn/s/blog_4119bd830100w7ov.html


    1. 从官网下载FreeImage 3.15.4 的源码  http://freeimage.sourceforge.net/download.html


    2. 新建安卓工程  Add Native Support 


      把FreeImage目录下的Source目录 和 Makefile.srcs复制到jni根目录下 


    3. 修改Android.mk为

    1. LOCAL_PATH := $(call my-dir)  
    2.   
    3. include $(LOCAL_PATH)/Makefile.srcs  
    4.   
    5. include $(CLEAR_VARS)  
    6. LOCAL_MODULE       := FreeImage
    7. LOCAL_C_INCLUDES   := $(LOCAL_PATH)/Source   
    8.                         $(LOCAL_PATH)/Source/Metadata   
    9.                         $(LOCAL_PATH)/Source/FreeImageToolkit   
    10.                         $(LOCAL_PATH)/Source/LibJPEG   
    11.                         $(LOCAL_PATH)/Source/LibPNG   
    12.                         $(LOCAL_PATH)/Source/LibTIFF4   
    13.                         $(LOCAL_PATH)/Source/ZLib   
    14.                         $(LOCAL_PATH)/Source/LibOpenJPEG   
    15.                         $(LOCAL_PATH)/Source/OpenEXR   
    16.                         $(LOCAL_PATH)/Source/OpenEXR/Half   
    17.                         $(LOCAL_PATH)/Source/OpenEXR/Iex   
    18.                         $(LOCAL_PATH)/Source/OpenEXR/IlmImf   
    19.                         $(LOCAL_PATH)/Source/OpenEXR/IlmThread   
    20.                         $(LOCAL_PATH)/Source/OpenEXR/Imath   
    21.                         $(LOCAL_PATH)/Source/LibRawLite   
    22.                         $(LOCAL_PATH)/Source/LibRawLite/dcraw   
    23.                         $(LOCAL_PATH)/Source/LibRawLite/internal   
    24.                         $(LOCAL_PATH)/Source/LibRawLite/libraw   
    25.                         $(LOCAL_PATH)/Source/LibRawLite/src  
    26. LOCAL_SRC_FILES    := $(SRCS)  
    27. LOCAL_CPP_FEATURES := rtti exceptions  
    28. #LOCAL_CFLAGS       := -O3 -fPIC  
    29. include $(BUILD_SHARED_LIBRARY) 

    4. 修改Application.mk为 全平台编译

    1. APP_STL   := gnustl_static  
    2. APP_ABI   := all  
    3. APP_OPTIM := release  

    或者只是ARM的

    1. NDK_TOOLCHAIN_VERSION:=4.8  
    2. APP_STL := gnustl_static  
    3. APP_CPPFLAGS := -std=c++11  
    4. APP_ABI    := armeabi  



    5. 找到LibTIFF4/tif_config.h 注释掉

    1. //#define HAVE_SEARCH_H 1  



    6. 由于编译会找不到LibRawLiteinternaldcraw_common.cpp最上面添加swab函数

    在CODE上查看代码片派生到我的代码片

    1. #include <stdint.h>  
    2. #include <asm/byteorder.h>  
    3.   
    4. static void swab(const void *from, void *to, ssize_t n)  
    5. {  
    6.     ssize_t i;  
    7.   
    8.     if (n < 0)  
    9.     {  
    10.         return;  
    11.     }  
    12.     for (i = 0; i < (n / 2) * 2; i += 2)  
    13.     {  
    14.         *((uint16_t*)to + i) = __arch__swab16(*((uint16_t*)from + i));  
    15.     }  
    16. }  

    OpenEXR有点兼容性的小BUG

      解决办法是找到ImfHuf.cpp 修改下头文件包含的顺序

    在CODE上查看代码片派生到我的代码片

    1. #include <string.h>  
    2. #include <cstring>  
    3. #include <algorithm>  
    4. #include <ImfHuf.h>  
    5. #include <ImfInt64.h>  
    6. #include <ImfAutoArray.h>  
    7. #include "Iex.h"  
    8. #include <assert.h>  




    8. 编译

  • 相关阅读:
    Webstorm 下的Angular2.0开发之路
    利用hexo+github+nodejs搭建自我博客的一天
    滑稽的下午angularjs 2.0管道的使用
    DNGuard 标准版 v2.90发布
    DNGuard Enterprise v2.92 released
    C#复杂表达式的问题
    直接在.Net程序(C#)中执行 native code
    采用Native 引导方式的.Net加密保护
    DNGuard HVM Trial V2.82 发布
    DNGuard Enterprise v2.90 released
  • 原文地址:https://www.cnblogs.com/cy568searchx/p/4308309.html
Copyright © 2020-2023  润新知