小编use*_*420的帖子

Android:使用NDK从SD卡文件IO

我试图使用NDK写入输出文件,它似乎没有工作.我写的代码看起来像这样:

JNIEXPORT jdouble JNICALL Java_com_example_sdcardtest2_CppMethods_nativeCalculations (JNIEnv* env, jclass clazz, jdouble dub){
    jdouble hub = dub + 10;
    FILE* file = fopen("/sdcard/textTest.txt","w+");
    fputs("HELLO WORLD!\n", file);
    fclose(file);
return hub;
}
Run Code Online (Sandbox Code Playgroud)

返回类型为double的原因是我计划将该函数用于其他目的,但我首先尝试文件io.在logcat中,我收到以下错误:

Fatal signal 11: (SIGSEGV) at 0x00000000c (code = 1) .....
Run Code Online (Sandbox Code Playgroud)

有趣的是,当我尝试使用java文件io写入或读取调用者活动中的同一文件时,我没有任何问题.我确保我在清单文件中有写权限.此外,如果我删除该FILE* file ...行,并尝试使用函数返回的double值,程序运行正常.有人可以帮忙吗?问题可能是我应该包含在Android.mk或Application.mk文件中吗?

更新 我正在使用三星Galaxy note 2,如果这有任何区别

UPDATE2

这是完整的代码:

java活动:

public class MainActivity extends Activity {
private TextView text1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    this.text1 = (TextView) findViewById(R.id.textView1);
    double d = CppMethods.nativeCalculations(2.80);
    String s = "The …
Run Code Online (Sandbox Code Playgroud)

c java file-io android android-ndk

10
推荐指数
1
解决办法
7645
查看次数

标签 统计

android ×1

android-ndk ×1

c ×1

file-io ×1

java ×1