gpt4 book ai didi

Android NDK Cmake 链接 .a(静态)库

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:35:40 27 4
gpt4 key购买 nike

我正在使用带有 cmake 和 Android NDK 的 Android Studio 2.2.2。我在链接 .a 库(静态库)时遇到问题。

这是我的命令:

# 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)

我的链接器报告错误

arm-linux-androideabi/bin\ld: error: cannot find -ltheoraplayer

error: undefined reference to 'TheoraVideoManager::TheoraVideoManager(int)'

它是 libtheoraplayer.a 的一部分。有没有人有类似的问题?知道如何解决这个问题吗?

我在那个位置有静态库 libtheoraplayer.a。我什至还有共享库 libtheoraplayer.so 但我也无法链接它。

如有任何建议,我们将不胜感激。

干杯。

最佳答案

发布答案。正如 Tsyvarev 所说,库的非绝对文件名存在问题。当我使用绝对路径时,它就像一个魅力。

谢谢。干杯。

关于Android NDK Cmake 链接 .a(静态)库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40358365/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com