将原本能通过编译,运行的mymain.c改为mymain.cpp,同时Android.mk中的LOCAL_SRC_FILES 处也改为.cpp
再编译,报错:
make: *** No rule to make target ‘jni/mymain.c ’ needed by 'obj/.../mymain.o'. Stop.删除jni中的libs和obj两个文件夹再编译,报错:
.obj/local/armeabi/objs/build/natives.o:In Function 'Java_...._Init':
D:.../jni/natives.c:10:undefined reference to 'Init'
意思是说Java本地函数中调用的Init未定义,编译不能通过
问题是:在代码文件为.c的时候一切正常,改为.cpp就说找不到这个函数的定义
初步怀疑头文件包含的问题,但是头文件包含和其他都是一样的,唯一改变的是这个文件后缀从c到cpp编译结果就不一样了。求解1:在大的工程下,包含有众多的头文件,如何正确全面的进行文件包含,防止编译的时候出现重定义或者未定义