Skip to content Skip to sidebar Skip to footer

Unable To Include Iostream In Android Why?

Have installed android-ndk-r7, and trying to compile .cpp file. #include using namespace std; int main ( int argc, char ** argv) { cout <<'Hello Worl

Solution 1:

Another way is that if you don't have application.mk and android.mk file,

add this in your build.gradle

ndk{
    moduleName = your_module_namestl="c++_static"
}

Solution 2:

I met this problem and just spent days to update my NDK from r10e to r20, there're several variables are changed.

For NDK r10e

Android.mk:

include$(CLEAR_VARS)
LOCAL_MODULE := main
LOCAL_SRC_FILES := ./main.cpp   
LOCAL_C_INCLUDES += $(LOCAL_PATH)/
LOCAL_CPP_EXTENSION := .cxx .cpp .cc
LOCAL_CPPFLAGS := -fexceptions -frtti
LOCAL_CPPFLAGS += -std=c++11 -D__cplusplus=201103L
include$(BUILD_EXECUTABLE)

Application.mk:

APP_ABI := all
APP_STL := gnustl_static
NDK_TOOLCHAIN_VERSION := 4.9
APP_OPTIM := debug

For NDK r20

Android.mk:

include$(CLEAR_VARS)
LOCAL_MODULE := main
LOCAL_SRC_FILES := ./main.cpp   
LOCAL_C_INCLUDES += $(LOCAL_PATH)/
LOCAL_CPP_EXTENSION := .cxx .cpp .cc
LOCAL_CPPFLAGS := -fexceptions -frtti
LOCAL_CPPFLAGS += -std=c++11 -D__cplusplus=201103L -DANDROID_STL=c++_shared
include$(BUILD_EXECUTABLE)

Application.mk:

APP_ABI := all
#In general, you can only use a static variant of the C++ runtime if you have one and only one shared library in your application.
APP_STL := c++_static
NDK_TOOLCHAIN_VERSION := clang
APP_PLATFORM := android-23
APP_OPTIM := debug

and my main.cpp (including my bin_node.h):

int main(int argc,char **argv) {   
printf("****************** tree node ******************\n");
amo::BinNode<int> root(0);
amo::BinNode<int>* lchild1 = root.insertLeftChild(1);
amo::BinNode<int>* rchild2 = root.insertRightChild(2);
amo::BinNode<int>* lchild3 = lchild1->insertLeftChild(3);
amo::BinNode<int>* rchild4 = lchild1->insertRightChild(4);
amo::BinNode<int>* lchild5 = rchild2->insertLeftChild(5);
amo::BinNode<int>* rchild6 = rchild2->insertRightChild(6);
amo::BinNode<int>* lchild7 = lchild3->insertLeftChild(7);
amo::BinNode<int>* rchild8 = lchild3->insertRightChild(8);
amo::BinNode<int>* lchild9 = rchild6->insertLeftChild(9);
amo::BinNode<int>* rchild10 = rchild6->insertRightChild(10);
amo::BinNode<int>* lchild11 = rchild8->insertLeftChild(11);
amo::BinNode<int>* rchild12 = rchild8->insertRightChild(12);

printf("going to root.traversePre()\n");
root.traversePre();
printf("going to root.traversePreLoop()\n");
root.traversePreLoop();
printf("going to root.traversePreLoop2()\n");
root.traversePreLoop2();
printf("\n****************** main return ******************\n");
return0;}

Run ndk-build and build an executable file

enter image description here

For more source code and information for this, check my GitHub

Post a Comment for "Unable To Include Iostream In Android Why?"