Tencent / wcdb

WCDB is a cross-platform database framework developed by WeChat.
Other
10.61k stars 1.39k forks source link

undefined reference to `sqlite3_open' #1113

Closed WindFromFarEast closed 3 weeks ago

WindFromFarEast commented 3 weeks ago

The language of WCDB

C++

The version of WCDB

v1.0.8

The platform of WCDB

Android

The installation of WCDB

e.g. CMake

What's the issue?

动态库链接libwcdb.so,链接过程中找不到libwcdb.so的符号 我Cmake代码如下 ` cmake_minimum_required(VERSION 3.6)

set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_MACOSX_RPATH 1) set(CMAKE_CXX_STANDARD 17) project(nativelib LANGUAGES C CXX)

add_library(nativelib SHARED nativelib.cpp /Users/bytedance/IntelliAlbumSDK/Biz/Android/Jianying/libs/arm64-v8a/libwcdb.so)

target_include_directories(nativelib PUBLIC /Users/bytedance/IntelliAlbumSDK/Biz/Android/nativelib/src/main/cpp /Users/bytedance/IntelliAlbumSDK/Biz/Android/xxx/build/bitsDepend/headerDir/)

add_library(wcdb SHARED IMPORTED) set_property(TARGET wcdb PROPERTY IMPORTED_LOCATION "/Users/bytedance/IntelliAlbumSDK/Biz/Android/xxx/libs/arm64-v8a/libwcdb.so")

target_link_libraries(nativelib wcdb android log) `

编译没问题,但是最终在nativelib.so的链接过程中,找不到wcdb中的符号,例如sqlite3_open(),报错如下: CMakeFiles/nativelib.dir/nativelib.cpp.o: In function Java_com_example_nativelib_NativeLib_stringFromJNI': /Users/bytedance/IntelliAlbumSDK/Biz/Android/nativelib/src/main/cpp/nativelib.cpp:15: undefined reference tosqlite3_open' /Users/bytedance/Library/Android/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: /Users/bytedance/IntelliAlbumSDK/Biz/Android/nativelib/build/intermediates/cmake/debug/obj/arm64-v8a/libnativelib.so: hidden symbol `sqlite3_open' isn't defined

Qiuwen-chen commented 3 weeks ago

Please try the latest version.