2023-01-21 268
所有NDK样本仅使用标题中的外部声明为外部并在CPP文件中定义的基本C函数.然后在包含JNI回调的C文件中包含标头文件后,一切正常.
是否可以使用Android NDK使用C ++类?我的应用程序不会成为本地活动,它仍然具有重要的Java部分,但它将称为CPU密集型计算的本机C代码(已经用C ++编写,类和其他C ++东西).
这是我的Hello-world现在像Strcuture:
文件” first.h”
#ifndef FIRST_H
#define FIRST_H
class Test
{};
#endif /* FIRST_H */
文件” second.cpp”
#include <jni.h>
#include "first.h"
#ifdef __cplusplus
extern "C" {
#endif
jint Java_com_example_twolibs_TwoLibs_add( JNIEnv* env,
jobject this,
jint x,
jint y )
{
Test t;
return 0;
}
#ifdef __cplusplus
}
#endif
最后是Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libtwolib-second
LOCAL_SRC_FILES := second.cpp
include $(BUILD_SHARED_LIBRARY)
非常基本,但这并不是编译.在一个.c文件中旋转第二cpp会在包含标头文件时引起错误,我想这是因为它不是C ++文件.
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Test'
使其.cpp提出以下错误:
make: *** No rule to make target `/cygdrive/c/android-ndk-r5c/samples/twolibs/jni/second.c', needed by `/cygdrive/c/android-ndk-r5c/samples/two-libs/obj/local/armeabi/objs/twolib-second/second.o'. Stop.
知道我怎么能使那件事编译?
谢谢
您可以将C ++与NDK一起使用,但是具有C ++代码的文件必须具有.cpp扩展名.
来自 android-mk.html :
请注意,C ++源文件的默认扩展名为’.cpp’.这是
但是可以通过定义变量来指定不同的
local_cpp_extension.不要忘记初始点(即’.cxx’会
工作,但不是” CXX”).
您将必须重新编译所有专门针对Android的本机库.您确实需要您计划使用的所有第三方本地液体的源代码问题. Android使用称为libc的glibc的浇水版本.对于大多数常规功能,它具有与GLIBC的匹配符号.但是据我所知,LIBC没有与strings相关的功能,并且绝对没有一些posix支持.如果您的本地库使用任何不弃用的功能,则必须通过使用libc支持的替代功能并相应地编码您的LIB来找到解决方案.
另外,正如您正确指出的那样,您将必须使用NDK将NDK接口(Android App/fwk)与本地世界(C ++).
尽管在我的经验中,这听起来很简单,在传统上汇编了Android(Android Porting)上的本地图书馆,但不能保证成功.
关于您的编译错误,似乎您首先将其称为” second.c”,然后将其重命名为” second.cpp”,但对象文件仍然在其中包含” second.c”名称,因此在您之前compile(bdk-build)您需要删除/cygdrive/c/c/android-ndk-r5c/samples/twibs/obj/obj/local/armeabi/objs/twolib second/directory中的 *.o和 *.d文件
以上所述是小编给大家介绍的与Android NDK/JNI一起使用C ++,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26328.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态