ПрограммированиеФорумОбщее

Android. NDK. Libpng.

#0
15:26, 25 окт 2014

Нужны картинки png и конечно же скачал libpng (version 1.6.14).
Но нормально установить так и не удалось.
Сижу под виндой что еще больше усложняет задачу (наверное).
Качнул CygWin, но так и воспроизвел ни одной инструкции в нем.
Судя по инструкциям все сделано через жопу: кучу переменных среды добавляй, какие то файлы тянуть туда сюда.
Почему нет норм инструкции?
Перерыл кучу инета. Все инструкции на каком то шагу загибаются: либо ошибка либо чего то нет в том же pnglib (например ./configure)
Тулчейны какие то непонятные - что, для чего, как и почему?

Была одна попытка без инструкций: думал подключить libpng как модуль прямо к проекту.
Написал Android.mk в корне libpng:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:= png_lib
LOCAL_SRC_FILES:= $(wildcard *.cpp)
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)

include $(BUILD_STATIC_LIBRARY)

В android.mk проекта подключаю модуль:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := game
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../GE
LOCAL_SRC_FILES := main.cpp \
                   ../GE/GE_MATH.cpp \
           ../GE/GE_PNG.cpp \
           AndroidWindowGlue.cpp
LOCAL_LDLIBS    := -llog -landroid -lEGL -lGLESv2 -lz
LOCAL_STATIC_LIBRARIES := android_native_app_glue
LOCAL_STATIC_LIBRARIES += png_lib

include $(BUILD_SHARED_LIBRARY)

$(call import-module,thirdparty/png_lib)
$(call import-module,android/native_app_glue)

Application.mk:

APP_ABI := armeabi armeabi-v7a x86
APP_PLATFORM := android-16

Такое сбилдилось, но когда пробую что то писать с участием libpng сразу лезут undefined reference

Опишите в двух словах как подключить linpng или киньте линк на статью какую нибудь (хотя многие видел и нифига не помогает)

#1
16:08, 25 окт 2014
LOCAL_PATH := $(call my-dir)

# libjpeg here :
include $(CLEAR_VARS)
LOCAL_MODULE := libjpeg
LOCAL_C_INCLUDES := ndk/libjpeg  
LOCAL_SRC_FILES := ndk/libjpeg/jcapimin.c ndk/libjpeg/jcapistd.c ndk/libjpeg/jccoefct.c ndk/libjpeg/jccolor.c ndk/libjpeg/jcdctmgr.c ndk/libjpeg/jchuff.c ndk/libjpeg/jcinit.c ndk/libjpeg/jcmainct.c ndk/libjpeg/jcmarker.c ndk/libjpeg/jcmaster.c ndk/libjpeg/jcomapi.c ndk/libjpeg/jcparam.c ndk/libjpeg/jcphuff.c ndk/libjpeg/jcprepct.c ndk/libjpeg/jcsample.c ndk/libjpeg/jctrans.c ndk/libjpeg/jdapimin.c ndk/libjpeg/jdapistd.c ndk/libjpeg/jdatadst.c ndk/libjpeg/jdatasrc.c ndk/libjpeg/jdcoefct.c ndk/libjpeg/jdcolor.c ndk/libjpeg/jddctmgr.c ndk/libjpeg/jdhuff.c ndk/libjpeg/jdinput.c ndk/libjpeg/jdmainct.c ndk/libjpeg/jdmarker.c ndk/libjpeg/jdmaster.c ndk/libjpeg/jdmerge.c ndk/libjpeg/jdphuff.c ndk/libjpeg/jdpostct.c ndk/libjpeg/jdsample.c ndk/libjpeg/jdtrans.c ndk/libjpeg/jerror.c ndk/libjpeg/jfdctflt.c ndk/libjpeg/jfdctfst.c ndk/libjpeg/jfdctint.c ndk/libjpeg/jidctflt.c ndk/libjpeg/jidctfst.c ndk/libjpeg/jidctint.c ndk/libjpeg/jidctred.c ndk/libjpeg/jmem-android.c ndk/libjpeg/jmemmgr.c ndk/libjpeg/jpegloader.c ndk/libjpeg/jquant1.c ndk/libjpeg/jquant2.c ndk/libjpeg/jutils.c 
include $(BUILD_STATIC_LIBRARY)

# libpng here :
include $(CLEAR_VARS)
LOCAL_MODULE := libpng
LOCAL_C_INCLUDES := ndk/libpng  
LOCAL_SRC_FILES := ndk/libpng/png.c ndk/libpng/pngerror.c ndk/libpng/pngget.c ndk/libpng/pngmem.c ndk/libpng/pngpread.c ndk/libpng/pngread.c ndk/libpng/pngrio.c ndk/libpng/pngrtran.cpp ndk/libpng/pngrutil.c ndk/libpng/pngset.c ndk/libpng/pngtrans.c ndk/libpng/pngwio.c ndk/libpng/pngwrite.c ndk/libpng/pngwtran.c ndk/libpng/pngwutil.c
include $(BUILD_STATIC_LIBRARY)

#потом много всякого говна моего

LOCAL_STATIC_LIBRARIES := android_native_app_glue libpng libjpeg soundlib

LOCAL_LDLIBS    := -L"$(ANDROID_NDK_ROOT)\sources\cxx-stl\gnu-libstdc++\4.6\libs\armeabi" -llog -lGLESv1_CM -lz -lstdc++ -lsupc++ -lgnustl_static -landroid -lEGL -lOpenSLES
include $(BUILD_SHARED_LIBRARY)

у меня в проекте так всеработает

работает под виндой VisualGDB плагин для студии.

#2
17:13, 25 окт 2014

progman
Спасибо за ответ.
Выявилось что я неправильно использовал wildcard и поэтому ни один с файлов библиотеки не компилировался,
ну и как следствия линкер не мог найти необходимые функции.

ПрограммированиеФорумОбщее

Тема в архиве.

Тема закрыта.