我也遇到与楼主相同的问题,
环境:win2000 server,vc++6.0,jdk1.3.0_02
请教高手帮忙解决

解决方案 »

  1.   

    你的dll要放在系统PATH(Windows)或者SH_LIBRARY_PATH(如果我没记错名字的话Unix)下
      

  2.   

    把你的dll放在与test.class相同的目录,或者把它放在系统System32目录下
      

  3.   

    如果dll不放在test.class相同目录下,会出现如下提示(我作的是hellow程序):
    Exception in thread "main" java.lang.UnsatisfiedLinkError: no hellow in java.library.path 
     at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1312) 
     at java.lang.Runtime.loadLibrary0(Runtime.java:749) 
     at java.lang.System.loadLibrary(System.java:820) 
     at HelloWorld.<clinit>(HellowWorld.java:10)
    若dll放在test.class相同目录,会出现如楼主所出现的提示
      

  4.   

    我用Delphi改写你的代码,将.Dll文件放到与Test.class相同的目录,没有出现问题
      

  5.   

    set LD_LIBRARY_PATH=.so文件所在目录
    export LD_LIBRARY_PATH
    然后再执行你的JAVA程序
      

  6.   

    有办法了! 是gcc少了行参数。 如下:
    gcc -I%JAVA_HOME%\include -I%JAVA_HOME%\include\win32 -Wl,--add-stdcall-alias -shared -o call.dll call.c
    参数:-Wl,--add-stdcall-alias 可以为函数加上标准调用前缀(stdcall @nn)。
    这样编译出的dll就可以了。都知道win32中dll中的函数要求有标准调用前缀,在JNI中不方便手动处理这个,Sun又没说清楚这事由编译器办。所以搞得我很郁闷。找了大半个月,终于在一个很古老的网页上找到答案。
    网址:http://www.inonit.com/cygwin/jni/helloWorld/c.html
    谢谢大家!