本帖最后由 xiamne 于 2009-10-13 11:11:42 编辑

解决方案 »

  1.   

    你的问题对于大部分程序,很可能是内存访问错误,也就是说你的程序访问adsloc32.dll了00030b00的地址,而这块地址一般是空地址(null)因为绝大多数程序都是从00400000开始加载。
      

  2.   

    但是adsloc32.dll在delphi里面被调用一直都没出现过问题,有什么解决方案吗?
      

  3.   


    似乎真的是string和widestring这两种类型冲突了
    那该怎么改?
      

  4.   

    在delphi中调用当然不会有问题,但是作为dll来说,一般不用string类型,如果用,还要加入sharemem之类的单元,常用pchar代替string类型
      

  5.   


    测试过了,将java的String类型传参给delphi的widestring类型是不存在问题的
      

  6.   

    以前写过Java调用delphi写的dll,我好像记得java对应的有个pas文件,用这个pas来写dll就没什么问题
      

  7.   

    char* 最安全
    delphi pchar
    java是啥不知道char*在内存中是连续的,不会出现不兼容的问题
      

  8.   

    我用delphi写了一个普通功能相似的P.DLL,传的参数依然上面说的DLL一样,却没有问题两个DLL的区别在于P.DLL没有调用adsloc32.dll,而且是在win xp下编译的,而上面所提到的出问题的DLL调了adsloc32.dll,而且是在win server2003下编译的两个DLL都在win xp下被java调
      

  9.   

    有可能是DLL放的目录不对,但是不知道放哪