在Android NDK中使用pngquantlib (libimagequant)
Use pngquant lib (libimagequant) in Android NDK
我正在尝试使用png量化库在pngquant.org/lib在我的Android项目中使用NDK r10(64位)在OS x上
我在编译库方面取得了进展。我现在遇到的问题是size_t类型无法解决。我尝试包含以下文件夹:
LOCAL_C_INCLUDES := $(NDK_TOOLCHAIN)/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9/include
但那没有用
我真的对一个包含pngquant的空的工作Android项目感兴趣。
任何帮助都非常感谢。
很抱歉更改了问题,但我原来问的问题中有一些错误的事实。
我没有足够的信息来直接解决您的具体问题,您是否试图使用独立的工具链?
当为Android构建时,因为你有多个目标架构,并且工具链有点复杂,所以最好使用NDK中的NDK -build脚本。
我在这里做了一个项目,你可以集成到你的Android项目目录:https://github.com/android-native-libraries/pngquant-android
原来的库是使用配置脚本,但不是扩展这些,我重写NDK Makefiles直接编译所有的库源,具有相同的cflags (openmp, sse…)
Android.mk:
LOCAL_PATH := $(call my-dir)
SRC_PATH := pngquant/lib
include $(CLEAR_VARS)
LOCAL_MODULE := imagequant
LOCAL_SRC_FILES :=
$(SRC_PATH)/blur.c
$(SRC_PATH)/libimagequant.c
$(SRC_PATH)/mediancut.c
$(SRC_PATH)/mempool.c
$(SRC_PATH)/nearest.c
$(SRC_PATH)/pam.c
$(SRC_PATH)/viter.c
LOCAL_C_INCLUDES := pngquant/lib
LOCAL_CFLAGS += -O3 -fno-math-errno -funroll-loops -fomit-frame-pointer -Wall -std=c99 -fopenmp
LOCAL_LDFLAGS += -fopenmp
ifeq ($(TARGET_ARCH_ABI),x86)
LOCAL_CFLAGS += -mtune=atom -msse -mfpmath=sse -mssse3 -DUSE_SSE=1
endif
include $(BUILD_SHARED_LIBRARY)
你可以扩展这个Android。使用libimagequant来添加你自己的原生库。包括美元(CLEAR_VARS)LOCAL_MODULE:= yourlibLOCAL_SRC_FILES:= yoursources.cLOCAL_C_INCLUDES:= pngquant/libLOCAL_SHARED_LIBRARIES:= imagequant
LOCAL_CFLAGS += -O3 -fno-math-errno -funroll-loops -fomit-frame-pointer -Wall -std=c99 -fopenmp
LOCAL_LDFLAGS += -fopenmp
ifeq ($(TARGET_ARCH_ABI),x86)
LOCAL_CFLAGS += -mtune=atom -msse -mfpmath=sse -mssse3 -DUSE_SSE=1
endif
include $(BUILD_SHARED_LIBRARY)
如果你只是想在默认设置下使用这个库,我已经做了一个简单的Android库,可能适合你的目的。
在build.gradle中:
dependencies {
compile 'com.ndahlquist:pngquant-android:0.2'
}
在你的Android应用中:
File inputPngFile = getYourPng();
File outputPngFile = getOutputFile()
new LibPngQuant().pngQuantFile(inputFile, outputFile);
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- JSON转换为nlohmann JSON-lib中的结构数组
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 使用 VS2015 在 Windows 10 上构建 Fortran .lib x64 位并将其链接到 C++
- 为什么我的链接器在找到Coin4d.lib后搜索Coin4sd.lib?
- libcpmtd.lib有什么用?
- LNK1104:无法打开libpjproject-i386-Win32-vc14-Debug-Static.lib
- 解析引用 |exe/dll vs lib
- 在 /usr/local/lib 下找不到库
- LLVM 编译:目标的配方 '../lib/IR/Release+Asserts/Intrinsics.gen.tmp' failed
- CMake 生成的 MSVC 项目找不到符号,即使为其相关 dll 正确生成了 lib 文件也是如此
- VS2015 未链接用户32.lib
- 从 .lib 文件创建一个.dll文件
- 看不到文件'SDL2.lib'
- 如何使用用户定义的函数覆盖 C lib 函数,如 _sbrk?
- 如何在不需要LIBCD.lib的情况下在Visual Studio 6中编译C项目
- 可执行文件C++包括.obj,.lib和.dll吗?
- 我应该安装 .cmake 文件来共享/cmake 还是 lib/cmake?
- 无法在 DLL 中链接 SDL2-static.lib
- 对使用 CMake 生成为 lib .a 的方法的未定义引用