我在java里面的代码如下:
public class testjava
{
  static
  {
    System.loadLibrary("testdll");
   }
   public native static int CheckPass(String FUserID,String FPassWord);   
   public static void main(String[] args)
   {
    testdll t = new testdll();
    System.out.println(t.CheckPass("admin","12345678"));
    }
  }java里面想调用VC里面的函数为CheckPassWord, CheckPassWord的函数原型是
int CheckPassWord(char * FUserID,char * FPassWord)请问我在下面的方法中,如何调用CheckPassWord这个方法。JNIEXPORT jint JNICALL Java_testdll_CheckPass (JNIEnv * env, jclass, jstring FU, jstring FP)
{
;
}我的目的是用java调用VC里面的方法CheckPassWord

解决方案 »

  1.   

    JNIEXPORT jint JNICALL Java_testdll_CheckPass (JNIEnv * env, jclass cls, jstring FU, jstring FP)
    {
    CheckPassWord(env->GetStringUTFChars(str,false),env->GetStringUTFChars(FP,false));
    }
      

  2.   

    楼上的给得比较准确,有些资料不指出GetStringUTFChars函数的。
      

  3.   

    不行呀。
    在VC里面编译出现下面的错误:
    cannot convert parameter 1 from 'const char *' to 'char *'
            Conversion loses qualifiers
      

  4.   

    /*
    类型强制转换
    */
    #include <jni.h>
    #include "Testjava.h"
    #include <stdio.h>void ok(char * a,char *b)
    {
    printf("%s",a);
    printf("%s",b);
    }
    JNIEXPORT jint JNICALL Java_Testjava_CheckPass (JNIEnv *env, jclass obj, jstring id, jstring pwd)
    {
    const char* cid = (*env)->GetStringUTFChars(env, id, 0);
    const char* cpwd =(*env)->GetStringUTFChars(env, pwd, 0);
    printf("%s",cid);
    printf("%s",cpwd);
    ok((char* )cid,(char*)cpwd);
    return 0;
    }