是否可以使用ndk10d为Android编译C ++ 14源代码?我已经尝试了g ++和clang编译器,但似乎-std=c++1y
c++_static
标志不起作用。
如果我使用User/someone/Software/Android/android-ndk-r10d/platforms/android-17/arch-arm/usr/include/locale.h:55:1: error: empty struct has size 0 in C, size 1 in C++
作为我的APP_STL,我会收到以下错误:
public class MainActivity extends AppCompatActivity {
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.context = this;
Intent alarm = new Intent(this.context, AlarmReceiver.class);
boolean alarmRunning = (PendingIntent.getBroadcast(this.context, 0, alarm, PendingIntent.FLAG_NO_CREATE) != null);
if(alarmRunning == false) {
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.context, 0, alarm, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), 60000, pendingIntent);
}
}
编辑:我使用Mac OSX 10.10.4和Xcode 6.3.2(能够为iOS编译C ++ 14)。
答案 0 :(得分:6)
我使用android-ndk-r12b-windows-x86_64,使用 -std = c ++ 14
编译成功Android.mk
LOCAL_CPPFLAGS = -Wall -std=c++14
答案 1 :(得分:3)
如果有人需要这个问题的答案,我找到了here。
它被称为CrystaX,基本上它是Android NDK的修改版本,允许定位C ++ 14,Boost库并具有许多其他功能。
答案 2 :(得分:1)
我在Application.mk
中使用以下指令。通过NDK_TOOLCHAIN_VERSION切换到clang工具链解决了许多问题。
APP_CPPFLAGS += -std=c++14
APP_STL := c++_static
NDK_TOOLCHAIN_VERSION := clang
答案 3 :(得分:0)
如果我使用c ++ _ static作为我的APP_STL,我会收到以下错误:
用户/有人/软件/ Android设备/机器人-NDK-r10d /平台/机器人-17 /弓形臂的/ usr /包括/ locale.h文件:55:1: 错误:空结构在C中的大小为0,在C ++中的大小为1
当我使用iostream时,我也一样。但这只是一个警告(我正在使用NDK 10e)并且它构建得很好。警告是“-Wextern-c-compat”,您可以像其他任何警告一样关闭它。
答案 4 :(得分:0)
我为 c++17 创建了一个带有原生 cpp 的 android 项目:
在 app/build.gradle 文件中:
NDK:21
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 16
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-std=c++17" # this answer key
}
}
}
}
有一个演示,https://github.com/c0i/GameV4/commit/f9a3728f1aebc70d79dc9791cc9854ef5e41cae1
谢谢,