本帖最后由 lcb 于 2011-11-23 22:28:34 编辑

解决方案 »

  1.   

    貌似就是不能使用 STL 的;
    如果是移植,自己实现相关的类吧;
     NDK 中的异常也是不支持的,但是可以使用 C 的错误处理机制
      

  2.   


    我用的android-ndk-r6,它已经自带STL支持了,编译程序的时候也可以看到cygwin编译STL并且成功,但在程序里只要一写STL相关的代码就编译失败。
      

  3.   

    android.mk
    你配置是否正确呢
    库或头文件有包含正常吗
      

  4.   

    你vector的头文件有米有包含?
      

  5.   


    我的:
    Application.mk
    APP_STL := stlport_staticAndroid.mk
    LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE    := hello-jni
    LOCAL_SRC_FILES := hello-jni.cpp
    LOCAL_CFLAGS := -fexceptionsinclude $(BUILD_SHARED_LIBRARY)
      

  6.   


    有啊,全部源码如下:
    #include <string.h>
    #include <jni.h>
    #include <iostream>
    #include <vector>using namespace std;#ifndef _Included_com_example_hellojni_HelloJni
    #define _Included_com_example_hellojni_HelloJni
    #ifdef __cplusplus
    extern "C" {
    #endifjstring
    Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
                                                      jobject thiz )
    {
    vector<int> vec;
    vec.push_back(1);
      return env->NewStringUTF("Hello from JNI!");
    }#ifdef __cplusplus
    }
    #endif
    #endif
      

  7.   

    把支持异常的 -fexceptions 去掉
      

  8.   

    stlsport不支持rtti和异常,换gnustl吧
      

  9.   

    http://stackoverflow.com/questions/6233274/android-ndkcompilation-errorlibstdcmultiple-definition-of-stdbad-excepti这个人强啊