【问题标题】:android NDK build issueandroid NDK 构建问题
【发布时间】:2012-10-25 07:17:54
【问题描述】:

当我在这里尝试 NDK 构建命令时,我得到了错误

        D:\AndroidWorkSpace\cppTestProj>D:\android-ndk-r8b-windows\android-ndk-r8b\ndk-b
uild.cmd
Android NDK: WARNING: Unsupported source file extensions in jni/Android.mk for m
odule cppTestProj
Android NDK:   LOCAL_SRC_FILES :=
"Compile++ thumb : cppTestProj <= maintestapp.cpp
jni/maintestapp.cpp:1:19: fatal error: iostream: No such file or directory
compilation terminated.
make: *** [obj/local/armeabi/objs/cppTestProj/maintestapp.o] Error 1

JNI 文件夹有以下文件:

maintestapp.cpp
Test_array_type.cpp
Test_array_type.h

你能告诉我这个问题吗?我没有使用 Cygwin。我是否缺少任何文件?

这是制作文件

    LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := cppTestProj
LOCAL_SRC_FILES := LOCAL_SRC_FILES := maintestapp.cpp \
                   Test_array_type.cpp

include $(BUILD_SHARED_LIBRARY)

这是cpp文件

#include<iostream>
#include"Test_array_type.h"
#include<stdio.h>
#include<conio.h>
using namespace std;
int main()
{
    Test_array_type test_array;
    Test_array_type *ptest_array1;

    test_array.AddToList(10);
    test_array.AddToList(20);
    test_array.AddToList("Basha");
    test_array.PrintList();
    ptest_array1 = test_array.clonelist();
    test_array.DeleteFromList(3);
    test_array.AddToList(10);
    test_array.AddToList(20);
    test_array.AddToList(30);
    test_array.AddToList(40);
    test_array.AddToList(true);
    test_array.AddToList("Java Beon APP");
    test_array.PrintList();
    ptest_array1->PrintList();
    getch();
    return true;
}

【问题讨论】:

  • 您应该从项目的根目录而不是jni 目录执行ndk-build 命令。请从项目的根目录运行该命令。
  • 显示你的 Android.mk 文件代码
  • @Dharmendra 我是新手,还没有准备制作文件。你能告诉我怎么做吗?
  • @juned D:\AndroidWorkSpace\cppTestProj\jni-----> 这是我的 proj 目录本身,我已经从那里给出了构建命令
  • 从这里运行构建命令`D:\AndroidWorkSpace\cppTestProj`

标签: android android-ndk


【解决方案1】:

您不应该从您的项目jni 文件夹中运行“ndk-build”命令。要执行Android.mk 文件,请在项目的根目录中运行ndk-bild 命令。

你的Android.mk应该是这样的

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := cppTestProj
LOCAL_SRC_FILES := maintestapp.cpp \
                   Test_array_type.cpp

include $(BUILD_SHARED_LIBRARY)

然后运行你的ndk-build 命令

您可以查看此链接以获取示例 Android.mk 文件

更新:

static {
        System.loadLibrary("hello-jni");
    }

更多信息请参考示例项目的HelloJni.java文件。

谢谢

【讨论】:

  • 您能具体说明问题吗?以及为什么这条LOCAL_SRC_FILES := 行是两次。
  • 我把它改成了一行。我尝试在 C 中制作一个 hello world 程序,并在 android.mk 中给出了文件的名称,并尝试执行构建命令
  • 您可以尝试运行Android NDK 捆绑的Android 示例应用hello-jni。尝试先运行该应用程序。
  • 我在命令提示符 D:\android-ndk-r8b-windows\android-ndk-r8b\samples\hello-jni>D:\android-ndk-r8b-windows 中得到了这个输出\android-ndk-r8b\ndk-build.cmd Gdbserver : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver Gdbsetup : libs/armeabi/gdb.setup "编译 thumb : hello-jni libs/armeabi/libhello-jni.so
  • 这意味着您已经成功构建,现在您可以加载 libhello-jni.so。查看更新
【解决方案2】:

您需要添加 LOCAL_C_INCLUDES 并包含您的可视 C++ 包含文件夹,因为您显然正在使用它。

【讨论】:

    猜你喜欢
    • 2013-08-16
    • 2014-05-21
    • 2012-08-05
    • 2012-03-30
    • 2011-06-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多