我用delphi做的DLL,在VC里面调用DLL里面的函数,传递参数有字符串string类型,但是VC里面无法把参数传递过去。若返回值是string的话,就会出现内存错误。
请问两者的string有什么区别,还有,除了用char数组和 指针,还有什么方法吗,可以与delphi里面的string传递么

解决方案 »

  1.   

    急啊,同胞们,有空都出来吼吼吧,做了好几天DLL了,尽被这些小问题折磨了。用delphi自己调用delphi编写的DLL,是没有问题的。可是用VC就有问题了。
      

  2.   

    delphi 写的dll最好用字符类型,pchar或是char数组。
      

  3.   

    关于delphi string类型,可以参考:http://www.cnblogs.com/del/archive/2008/03/03/1088984.html
      

  4.   

    基本上是两码子事吧,没有通用性,用标准的PChar吧
      

  5.   

    双方都用PCHAR就好了 delphi的string是个特殊类型的 对应VC里面的 ^AnsiString;
      

  6.   

    如果字符串为“AT”,请问VC里面怎么写传递参数send(?)
    delphi的DLL里面又怎么写接受参数send(?),使得temp:string;赋值后temp可以等于“AT”。
      

  7.   

    爲了保證這個函數被其他語言編寫的程序所調用,作為參數傳遞的字符串應該以null結束(既PChar類型),而不是string類型~~~~
      

  8.   

    啊,终于解决了
    在delphi的DLL里面
    function AT( pstr:pchar):integer;stdcall;
    var   
      temp:string;
    begin
         temp:=pstr^;  //这里的尖号不要就对了,我哭了...
          showmessage(temp);
    end;非常感谢各位,又长见识了。
      

  9.   

    可以使用PChar来处理
    或者BSTR来处理。