error: undefined reference to

在做JNI开发时,对C/C++写的libKF.so进行JNI封装成libkftest.so时,遇到以下问题:

Build command failed.
Error while executing process D:\Android\sdk\cmake\3.10.2.4988404\bin\ninja.exe with 

arguments {-C D:\project\SDK\app\.cxx\cmake\debug\armeabi-v7a kftest}
ninja: Entering directory `D:\project\SDK\app\.cxx\cmake\debug\armeabi-v7a'
[1/6] Building C object util/CMakeFiles/util.dir/stringutil.c.o
[2/6] Building C object util/CMakeFiles/util.dir/handleRes.c.o
[3/6] Building C object util/CMakeFiles/util.dir/logutil.c.o
[4/6] Building CXX object CMakeFiles/kftest.dir/kftest.cpp.o
[5/6] Linking C static library util\libutil.a
[6/6] Linking CXX shared library D:\project\SDK\app\build\intermediates\cmake\debug

\obj\armeabi-v7a\libkftest.so
FAILED: D:/project/SDK/app/build/intermediates/cmake/debug/obj/armeabi-v7a/libkftest.so 
cmd.exe /C "cd . && D:\Android\android-ndk-r17c\toolchains\llvm\prebuilt\windows-

x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi --gcc-

toolchain=D:/Android/android-ndk-r17c/toolchains/arm-linux-androideabi-

4.9/prebuilt/windows-x86_64 --sysroot=D:/Android/android-ndk-r17c/sysroot -fPIC -

isystem D:/Android/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi -

D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-

protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-

d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11  -O0 -fno-

limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -nostdlib

++ --sysroot D:/Android/android-ndk-r17c/platforms/android-21/arch-arm -Wl,--build-id 

-Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--fix-cortex-a8 -Wl,--exclude-

libs,libunwind.a -LD:/Android/android-ndk-r17c/sources/cxx-stl/llvm-libc+

+/libs/armeabi-v7a -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-

z,relro -Wl,-z,now -shared -Wl,-soname,libkftest.so -o D:\project\SDK\app\build

\intermediates\cmake\debug\obj\armeabi-v7a\libkftest.so 

CMakeFiles/kftest.dir/kftest.cpp.o  

D:/project/SDK/app/src/main/cpp/../jniLibs/armeabi-v7a/libKF.so util/libutil.a -llog -

landroid -llog -latomic -lm "D:/Android/android-ndk-r17c/sources/cxx-stl/llvm-libc+

+/libs/armeabi-v7a/libc++_static.a" "D:/Android/android-ndk-r17c/sources/cxx-stl/llvm-

libc++/libs/armeabi-v7a/libc++abi.a" "D:/Android/android-ndk-r17c/sources/cxx-

stl/llvm-libc++/libs/armeabi-v7a/libunwind.a" "-ldl" && cd ."
D:/project/SDK/app/src/main/cpp/kftest.cpp:618: error: undefined reference to 'BLT_SCAN'
D:/project/SDK/app/src/main/cpp/kftest.cpp:645: error: undefined reference to 'BLT_Open'
D:/project/SDK/app/src/main/cpp/kftest.cpp:667: error: undefined reference to 'BLT_CheckInfo'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.


报error: undefined reference to 'xxx'的错误。

查找资料,都没有解决。后来发现是libKF.so库有问题,里面根本没有“BLT_SCAN”、“BLT_Open”、“BLT_CheckInfo”这几个C/C++的接口,而我就是对这几个接口进行JNI封装。提供libKF.so库的人信誓旦旦的说这个库没问题,别人用就没问题。导致我一直以为是我这边配置文件和路径写的有问题。如果你找不到原因,可以跟给你提供.so库的人员联系一下看看是不是库的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值