char * jtrue;
jtrue=0x01;
fileName=(*env)->GetStringUTFChars(env,jFileName,jtrue);
或者传递array试试

解决方案 »

  1.   

    http://java.sun.com/docs/books/tutorial/native1.1/stepbystep/index.html
      

  2.   

    http://java.sun.com/docs/books/tutorial/native1.1/stepbystep/index.html 
    上面都很简单的调用,他问的是调用成功出现的问题。
    “在java调用中fileName输出是正确的,用printf输出看说明调用和传递成功了,但程序在使用该变量的方法里面终止了,问题何在呢??”
    我看是jvm和C变量转变问题,
    fileName=(*env)->GetStringUTFChars(env,jFileName,0);函数有问题
    fileName指向的字符串应该复制一份到C程序中
      

  3.   

    应该这样:
    jboolean iscopy;
    const char *fileName= (*env)->GetStringUTFChars(
    env, jFileName, &iscopy);
      

  4.   


    jboolean iscopy=JNI_FALSE;
    或者JNI_TRUE,不知道有什么不同,看看哪个可以就
    用咯
      

  5.   

    不行,程序依然在RunDllTest(fileName)方法退出了
      

  6.   

    fileName=(*env)->GetStringUTFChars(env,jFileName,0);后首先把fileName中的内容memcpy到另一个char*中,另外,你RunDllTest()函数做了什么操作?
      

  7.   

    新情况:我不从java传递参数过去,直接使用
    RunDllTest("text");写个参数给C,结果依然
    RunDllTest方法下面的printf就不执行了
    那么RunDllTest使整个程序退出了,会不会是
    内存超出jvm界限了??
      

  8.   

    参考Shared Stubs JNI Example
      

  9.   

    可以把你的dll源代码贴出来看一看。因为我实在不是很明白说的事情到底是怎么一回事情。
    谢谢