首页 / C++ / android114 c转换成c++
android114 c转换成c++
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android114 c转换成c++,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2304字,纯文字阅读大概需要4分钟。
内容图文
##C向C++改造 1. 把c文件后缀名换成cpp 2. Android.mk文件中的hello.c也要换成hello.cpp 3. c++的使用的环境变量结构体中,访问了c使用的结构体的函数指针,函数名全部都是一样的,只是参数去掉了结构体指针 4. 访问函数指针时,把env前面的*号去掉,因为此时env已经是一级指针 5. clean,清除之前编译的残留文件 6. 把声明函数的h文件放入jni文件夹中,include该h文件 jni是java和C的中间人。 其余都一样,hello.cpp
#include <jni.h>
#include "com_itheima_cplusplus_MainActivity.h"//C++函数要声明在使用,并把这个文件放入jni文件夹中,
JNIEXPORT jstring JNICALL Java_com_itheima_cplusplus_MainActivity_helloC
(JNIEnv * env, jobject obj){
char* cstr = "hello from c";
//return (*env)->NewStringUTF(env, cstr); 这是c的写法
return env->NewStringUTF(cstr);
}
activity:
package com.itheima.cplusplus; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.Toast; public class MainActivity extends Activity { static{ System.loadLibrary("hello"); } @Override protectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } publicvoid click(View v){ Toast.makeText(this, helloC(), 0).show(); } publicnative String helloC(); }
Android.mk
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello LOCAL_SRC_FILES := hello.cpp include $(BUILD_SHARED_LIBRARY)
com_itheima_cplusplus_MainActivity.h
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_itheima_cplusplus_MainActivity */ #ifndef _Included_com_itheima_cplusplus_MainActivity #define _Included_com_itheima_cplusplus_MainActivity #ifdef __cplusplus extern"C" { #endif/* * Class: com_itheima_cplusplus_MainActivity * Method: helloC * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_itheima_cplusplus_MainActivity_helloC (JNIEnv *, jobject); #ifdef __cplusplus } #endif#endif
分支c进程
#include <jni.h> #include <android/log.h> #define LOG_TAG "System.out" //重命名#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)//重命名#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)//重命名void Java_com_itheima_fork_MainActivity_callC(JNIEnv * env, jobject obj){ //在当前进程分支出c进程,即使把java进程杀了,C进程也杀不掉,同时c进程可以把java进程又启动起来。int pid = fork(); //如果为0,分支成功if(pid == 0){ while(1){ LOGI("hello xiaozhi"); sleep(1); } } }
原文:http://www.cnblogs.com/yaowen/p/5001781.html
内容总结
以上是互联网集市为您收集整理的android114 c转换成c++全部内容,希望文章能够帮你解决android114 c转换成c++所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。