簡體   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