I am using Android Studio 2.2.2 with cmake and Android NDK. I have a problem linking .a library (Static lib).
Here is my cmake:
# Sets the minimum version of CMake required to build the native # library. You should either keep the default value or only pass a # value of 3.4.0 or lower. cmake_minimum_required(VERSION 3.4.1) set(CMAKE_VERBOSE_MAKEFILE on) # Creates and names a library, sets it as either STATIC # or SHARED, and provides the relative paths to its source code. # You can define multiple libraries, and CMake builds it for you. # Gradle automatically packages shared libraries with your APK. add_library(lib_webp SHARED IMPORTED ) set_target_properties(lib_webp PROPERTIES IMPORTED_LOCATION src/main/jni/${ANDROID_ABI}/libwebp.so) add_library( # Sets the name of the library. game-lib # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). # Associated headers in the same location as their source # file are automatically included. src/main/cpp/main.cpp src/main/cpp/android_native_app_glue.c ) target_include_directories(game-lib PRIVATE ../../../../libs/headers/android ) include_directories($ENV{NDK_MODULE_PATH}/sources/android/native_app_glue/) # Specifies libraries CMake should link to your target library. You # can link multiple libraries, such as libraries you define in the # build script, prebuilt third-party libraries, or system libraries. target_link_libraries( # Specifies the target library. game-lib # Links the target library to the log library # included in the NDK. # ${log-lib} # Specifies the name of the NDK library that # you want CMake to locate. log android OpenSLES z GLESv2 EGL dl ) add_definitions(-g -DANDROID -Wno-write-strings -fsigned-char -Wno-conversion-null) TARGET_LINK_LIBRARIES(game-lib libtheoraplayer.a) My linker reports an error
arm-linux-androideabi/bin\ld: error: cannot find -ltheoraplayer
error: undefined reference to 'TheoraVideoManager::TheoraVideoManager(int)'
which is a part of libtheoraplayer.a. Did anyone had similar problem? Any idea how to solve this?
I have the Static lib libtheoraplayer.a present at that location. I even have the Shared lib also, libtheoraplayer.so but I can`t link it either.
Any advice would be appreciated.
Cheers.
I have the Static lib libtheoraplayer.a present at that location.- Where exactly do you have this library? I see nolink_directoriescalls in you code, so why do you expect a linker to find the library?target_link_libraries, or using IMPORTed library target with absolute path, or using 'link_directories' call with directory where to search the library. In all cases the library file islibtheoraplayer.a, which you mention in the question.