Java 调用C++

原创 2013年12月04日 11:03:39

1. javac, javah

2. Try this! http://www.cnblogs.com/cpcpc/archive/2012/08/13/2636199.html 

3. Release *.dll: 生成->编译(要不报错)->生成解决方案->去找 Release\*.dll

4. Java和C++之间传递string http://www.easymorse.com/index.php/archives/1765

javac TestDLL.java

//javah关键点,一直无法找到类,这样set classpath就可以了 http://bbs.csdn.net/topics/370195082?page=1#post-395485262

set classpath=...\src

javah testDLL.TestDLL

//传string

//头文件 testDLL_TestDLL.h

JNIEXPORT void JNICALL Java_com_liyong_TestNativeCode_TestNativeCode_SendSMS
  (JNIEnv *, jobject, jstring);

//TestDLL.cpp

//一个转换jstring成C string的函数

string jstring2str(JNIEnv* env, jstring jstr) {
        char* rtn = NULL;
        jclass clsstring = env->FindClass("java/lang/String");
        jstring strencode = env->NewStringUTF("UTF8");
        jmethodID mid = env->GetMethodID(clsstring, "getBytes",
                        "(Ljava/lang/String;)[B");
        jbyteArray barr = (jbyteArray) env->CallObjectMethod(jstr, mid, strencode);
        jsize alen = env->GetArrayLength(barr);
        jbyte* ba = env->GetByteArrayElements(barr, JNI_FALSE);
        if (alen > 0) {
                rtn = (char*) malloc(alen + 1);
                memcpy(rtn, ba, alen);
                rtn[alen] = 0;
        }
        env->ReleaseByteArrayElements(barr, ba, 0);
        string stemp(rtn);
        free(rtn);
        return stemp;
}

JNIEXPORT void JNICALL Java_com_liyong_TestNativeCode_TestNativeCode_SendSMS(JNIEnv *env, jobject thiz, jstring JavaString)

{

//JAVA String->C char*的转换

string MyJstr=jstring2str(env,JavaString);
const char*  MyCstr= MyJstr.c_str();

...

}

相关文章推荐

android 简单的java c++ 相互调用源码

  • 2017年11月01日 19:55
  • 20.26MB
  • 下载

java中调用C++生成的DLL

  • 2012年12月25日 09:28
  • 30KB
  • 下载

Java 调用 C/C++ 之 JNA 系列实战篇 —— 输出char * (六)

一、 工作环境             1. windows (64位), JDK (64位),dll文件 (64位)         2. Linux (64位),      JDK (...

android下用java调用c/c++实现jni

  • 2014年12月26日 10:16
  • 442KB
  • 下载

在C或C++中调用JAVA方法

  • 2014年04月25日 17:07
  • 123KB
  • 下载

C/C++调用java---JNI常用函数

C/C++调用java---JNI常用函数 从原始类数据的缓冲区中加载类。         参数:         env:JNI 接口指针。         ...

java调用C++写的dll的实例

  • 2011年11月15日 17:18
  • 495KB
  • 下载

java 调用C++库测试代码

  • 2017年08月29日 22:51
  • 488KB
  • 下载

android-java与C++的相互调用-随心

刚研究了java与C++的相互调用,赶紧记录下来。。。 一、java调用C++ 要想让java调用C++,必须让C++函数按着命名规则来。命名规则为 返回值 Java_包路径_类名_函数名(JNIEn...

java调用C++ Demo

  • 2013年06月25日 11:46
  • 475KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 调用C++
举报原因:
原因补充:

(最多只允许输入30个字)