Я использую Android Studio и NDK в своем приложении, и у меня возникают проблемы с некоторыми математическими функциями, такими как sinf, cosf и sqrtf. Когда я использую эти функции, они, кажется, просто возвращают 0.
я имею #include<math.h>
в верхней части моего файла, и я попытался связать математическую библиотеку в build.gradle, но это ничего не изменило.
Мой файл build.gradle выглядит так:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.android.gl2jni"minSdkVersion 5
targetSdkVersion 5
ndk {
moduleName "libgl2jni"ldLibs "GLESv2","log","m"stl "gnustl_shared"cFlags "-fexceptions -std=gnu++11 -frtti -lm"}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
РЕДАКТИРОВАТЬ:
Одна проблемная область кода:
rotation = sinf(phase * 25.0f) * 0.4f;
phase += deltaTime;
Я ожидаю, что вращение будет идти вперед и назад по синусоиде, между -1 и 1, но оно остается постоянным. Это не проблема с дельта-временем, если я изменю его на rotation = deltaTime;
это постоянно идет вверх.
РЕДАКТИРОВАТЬ 2:
Любой код, который использует функции math.h.
Основной пример может быть:
#include <math.h>
#include <android/log.h>
void SomeFunction(){
//Should be 0
__android_log_print(ANDROID_LOG_VERBOSE, "Math Test", "%f", sinf(0.0f));
//Should be 1
__android_log_print(ANDROID_LOG_VERBOSE, "Math Test", "%f", sinf(3.14f * 0.5f));
}
Задача ещё не решена.