我在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
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
{
const char* cFU = (*env)->GetStringUTFChars(env, FU, 0);
const char* cFP = (*env)->GetStringUTFChars(env, FP, 0);
CheckPassWord( * cFU,char * cFP)
}
{
const char* cFU = (*env)->GetStringUTFChars(env, FU, 0);
const char* cFP = (*env)->GetStringUTFChars(env, FP, 0);
CheckPassWord( * cFU,char * cFP);
}
或者再声明两个指针变量
const char* cFU = (*env)->GetStringUTFChars(env, FU, 0);
const char* cFP = (*env)->GetStringUTFChars(env, FP, 0);
CheckPassWord( * cFU,char * cFP);
是编译不通过的,去掉 const也是编译不通过呀。
你那个CheckPassword函数都是什么样的阿?贴出来
int CheckPassWord(char * FUserID,char * FPassWord)
/*
*Testjava.java文件
*/
public class Testjava
{
static
{
System.loadLibrary("testdll");
}
public native static int CheckPass(String FUserID,String FPassWord);
public static void main(String[] args)
{
Testjava t = new Testjava();
System.out.println(t.CheckPass("admin","12345678"));
}
}
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Testjava */#ifndef _Included_Testjava
#define _Included_Testjava
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Testjava
* Method: CheckPass
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_Testjava_CheckPass
(JNIEnv *, jclass, jstring, jstring);#ifdef __cplusplus
}
#endif
#endif
你先编译运行这个看看
*/
#include <jni.h>
#include "JNIString.h"
#include <stdio.h>JNIEXPORT jint JNICALL Java_Testjava_CheckPass (JNIEnv *, jobject 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);
}
hdhmail2000(禅剑飞雪) 老兄,我按你说的改,在VC里面还是编译不通过。
#include <jni.h>
#include "Testjava.h"
#include <stdio.h>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);
return 0;
}
这个我用gcc下编译成功的,关键在调用你那个c++函数了
类型强制转换,好了就给分哈,嘿嘿
*/
#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;
}