android c 11 编译,Android NDK r9b和编译C 11
對不起,以下應該是評論,而不是回答 – 因為我不知道你的代碼有什么問題,但是你可以做些什么來弄清楚自己:
這是我最小的Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := HelloJni.cpp
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
Application.mk
APP_CPPFLAGS := -std=c++11
NDK_TOOLCHAIN_VERSION=4.8
APP_STL=gnustl_static
這是最小的HelloJni.cpp
#include
#include
void doSomeWork( void )
{
__android_log_print(ANDROID_LOG_DEBUG, "HelloJni", "hello from thread...");
return;
}
extern "C"
jstring
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
jobject thiz )
{
std::thread t( doSomeWork );
t.join();
return env->NewStringUTF("Hello from JNI !");
}
它在我的Mac上的r9b中構建干凈.要檢查一件事:運行ndk-build V = 1并確保鏈接步驟類似于
~/android-ndk-r9b/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++ -Wl,-soname,libhello-jni.so -shared --sysroot=~/android-ndk-r9b/platforms/android-17/arch-arm ./obj/local/armeabi/objs-debug/hello-jni/HelloJni.o ~/android-ndk-r9b/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/libgnustl_static.a -lgcc -no-canonical-prefixes -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -L~/android-ndk-r9b/platforms/android-17/arch-arm/usr/lib -llog -lc -lm -o ./obj/local/armeabi/libhello-jni.so
并檢查命令的輸出
~/android-ndk-r9b/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86/bin/arm-linux-androideabi-nm -C ~/android-ndk-r9b/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/libgnustl_static.a | grep std::thread
這是我得到的:
00000000 T std::thread::_M_start_thread(std::shared_ptr<:thread::_impl_base>)
00000000 T std::thread::hardware_concurrency()
00000000 T std::thread::join()
00000000 T std::thread::detach()
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的android c 11 编译,Android NDK r9b和编译C 11的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机水平考试ppt试卷,计算机等级考试
- 下一篇: mybatisplus 操作另一个数据库