比如
class MyJavaClass 
{
  public string  db_name;
  public string  table_name;
}
public class UseObjects 
{public static void main(String [] args) 
{
    UseObjects app = new UseObjects();
    MyJavaClass anObj = new MyJavaClass();
    anObj.db_name = "oracle数据库";
    anObj.table_name="表一";
    app.print(anObj);
}private native void print(MyJavaClass obj);
  
static 
{
    System.loadLibrary("UseObjImpl");
}}JNIEXPORT void JNICALL
Java_UseObjects_changeObject(
  JNIEnv * env, jobject jThis, jobject obj)
{
     //这个里面咋写呀?怎么把上面的两个字符串变为指针类型 ,谢谢!
}

解决方案 »

  1.   

    JNIEXPORT void JNICALL
    Java_UseObjects_print(
      JNIEnv * env, jobject jThis, jobject obj)
    {
         const char* dbstr, tablestr;
         jfield fid;
         jstring jstr;     jclass cls = env->GetObjectClass(obj);
         assert( cls != NULL );     fid = env->GetFieldID(cls,"db_name","Ljava/lang/String"); 
         assert( fid != NULL );     jstr = env->GetObjectField(obj,fid);
         assert( jstr != NULL );     dbstr = env->GetStringUTFChar(jstr,NULL);
         assert(dbstr != NULL);     printf("%s",dbstr);     同理,可以得到table_name的值,楼主该知道如何实现了
        
    }
      

  2.   

    jfield fid;
         jstring jstr;
         jclass cls = env->GetObjectClass(obj);
         fid = env->GetFieldID(cls,"db_name","Ljava/lang/String"); 
         jstr = env->GetObjectField(obj,fid);
         char* dbstr =(*env)->GetStringUTFChars(env,jstr ,0);
         (*env)->ReleaseStringUTFChars(env,jstr ,dbstr );     //table_name相同
      

  3.   

    不是很清楚,这里有些JNI的文章,楼主看看:http://www.graphics.net.cn/article/java/java_jni_vc6.asphttp://www.graphics.net.cn/article/java/java_jni_string.asphttp://www.graphics.net.cn/article/java/java_jni_skill.asphttp://www.graphics.net.cn/article/java/java_jni_skill_2.asphttp://www.graphics.net.cn/article/java/java_jni.asp