繁体   English   中英

我无法将预建的库包含到android studio中

[英]I am not able to include prebuilt library into android studio

我已经在Ubuntu 16.04 64位系统中编写了一个c ++程序。 我已经建立了它的静态库。 现在我在Windows 10上有一个android studio。我想将该库导入到我的android项目中。 但我无法做到这一点,我得到了这样的错误...

Build command failed.
Error while executing process C:\Users\Parth\AppData\Local\Android\Sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {--build C:\Users\Parth\Desktop\New folder\Octopus\app\.externalNativeBuild\cmake\debug\x86_64 --target native-lib}
[1/2] Building CXX object CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o
[2/2] Linking CXX shared library ..\..\..\..\build\intermediates\cmake\debug\obj\x86_64\libnative-lib.so
FAILED: cmd.exe /C "cd . && C:\Users\Parth\AppData\Local\Android\Sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe  --target=x86_64-none-linux-android --gcc-toolchain=C:/Users/Parth/AppData/Local/Android/Sdk/ndk-bundle/toolchains/x86_64-4.9/prebuilt/windows-x86_64 --sysroot=C:/Users/Parth/AppData/Local/Android/Sdk/ndk-bundle/sysroot -fPIC -isystem C:/Users/Parth/AppData/Local/Android/Sdk/ndk-bundle/sysroot/usr/include/x86_64-linux-android -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -D__ANDROID_API__=15 -fexceptions -frtti -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -nostdlib++ --sysroot C:/Users/Parth/AppData/Local/Android/Sdk/ndk-bundle/platforms/android-21/arch-x86_64 -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -LC:/Users/Parth/AppData/Local/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86_64 -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libnative-lib.so -o 
..\..\..\..\build\intermediates\cmake\debug\obj\x86_64\libnative-lib.so CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o  ../../../../libs/abc.a -llog -latomic -lm "C:/Users/Parth/AppData/Local/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86_64/libc++_static.a" "C:/Users/Parth/AppData/Local/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86_64/libc++abi.a" && cd ."
../../../../libs/abc.a(sum.o):sum.cpp:function sum(int, int): error: undefined reference to 'std::cout'
../../../../libs/abc.a(sum.o):sum.cpp:function sum(int, int): error: undefined reference to 'std::cout'
../../../../libs/abc.a(sum.o):sum.cpp:function sum(int, int): error: undefined reference to 'std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
../../../../libs/abc.a(sum.o):sum.cpp:function sum(int, int): error: undefined reference to 'std::ostream::operator<<(int)'
../../../../libs/abc.a(sum.o):sum.cpp:function sum(int, int): error: undefined reference to 'std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
../../../../libs/abc.a(sum.o):sum.cpp:function sum(int, int): error: undefined reference to 'std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
../../../../libs/abc.a(sum.o):sum.cpp:function mul(int, int): error: undefined reference to 'std::ostream::operator<<(int)'
../../../../libs/abc.a(sum.o):sum.cpp:function mul(int, int): error: undefined reference to 'std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
../../../../libs/abc.a(sum.o):sum.cpp:function mul(int, int): error: undefined reference to 'std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
../../../../libs/abc.a(sum.o):sum.cpp:function __static_initialization_and_destruction_0(int, int): error: undefined reference to 'std::ios_base::Init::Init()'
../../../../libs/abc.a(sum.o):sum.cpp:function __static_initialization_and_destruction_0(int, int): error: undefined reference to 'std::ios_base::Init::~Init()'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

这是我的gradle文件

这是我的cMakeLists.text

首先 ,从您的库项目的屏幕快照中,您正在将ndk与CMake一起使用,这没有任何意义。 如果您使用cmake ,则在.mk文件中进行的配置(即Android.mkApplication.mk )都不会起作用。 尝试清理您的项目。

其次 ,您的错误日志表明您的libstdc++.a不在位。 检查路径C:/Users/Parth/AppData/Local/Android/Sdk/ndk-bundle/platforms/android-21/arch-x86_64/usr/lib/libstdc++.a存在。

https://dl.google.com/android/repository/android-ndk-r17b-windows-x86_64.zip下载ndk,解压缩并在local.properties配置此路径

ndk.dir=<mypath>/Android/ndk/android-ndk-r17b-windows-x86_64
sdk.dir=<mypath>/Android/sdk

第三 ,你必须确保你的所有.a让他们与Android兼容的静态库使用的Android CMake的工具链编译。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM