你的Dll的函数是怎么输出怎么调用的?一定要加上stdcall另外在dll中不要使用string,换用PChar

解决方案 »

  1.   

    解决的方法:
    请在你的.dpr和.pas的文件的开头加入对ShareMem单元的引用。但是你要是在PB中用,那么你还有其它的问题。
    如果你要讨论的话,请继续发贴子...
      

  2.   


    Crob(我干嘛这么帅) 的回答是不对的,这不是stdcall调用的问题,而是在Delphi中对长字符串的内存管理的问题。如果你对这个问题感兴趣的话,我们可以进行后续的讨论。祝你好运
      

  3.   

    TO victorlee_lq(victor):
    首先需要感谢你对该问题的关注,由于我发布此帖后,有一段时间没人应答,产生了错觉就以为DELPHI版的人气不热,对该问题就有一段时间没有关注。我非常希望可以和你交沟通,不过首先声明我对DELPHI的了解只是限于皮毛,能够和你沟通我感到非常荣幸。我的QQ号是:30457030,你的可以公布吗?另, 你可以留下你的EMAIL我把相关的DLL以及测试该DLL的源代码给你发过去, 希望可以给予赐教,并希望把该问题继续讨论下去!切入正题,你的回答是“请在你的.dpr和.pas的文件的开头加入对ShareMem单元的引用”,但我不知道加入对ShareMem单元的引用的目的,如使用其的什么功能或函数?(是不是比较低级的问题?),我按照你说的方法在DLL工程的dpr文件中加入了ShareMem, 但结果还是一样,我用DELPHI调用该DLL中的函数得到以下错误信息:
    “Project testfordll.exe(我调用DLL的测试文件) raised exception class EAccessViolation with message 'Access violation at address 00273286 in module 'GB2BIG5.dll'(对应提供转换的DLL). Read of address 0013A000'. Precess Stopped. Use Step or Run to continue.”