我由于某些原因需要写一个DLL 给用VB的人具体函数原型是这样的(很简单):
function  F1(var EnString,sreturn:pchar):pchar;
begin
  result := EnString;
end;exports
  F1 ;在该项目编译后用delphi 调用返回正常,但如果用VB调用的话返回不正常,具体问题在于 delphi 跟 vb的数据类型是不同的,但我应该如果解决呢??LPCTSTR 我也用过 但是 还是不行 vb 那边的调用语句是这样的 Private Declare Function F1 Lib "CODED.dll" (ByVal EnString
As String, ByVal sreturn As String) As String

解决方案 »

  1.   

    1. 跨语言的库,函数返回值类型切记使用字符串
    2. 要有统一的调用约定(VB只支持STDCALL)你的Delphi中声明的是var类型的参数,VB中应该使用ByRef而不是ByVal
      

  2.   

    to Eastunfail :
      兄弟,先谢谢你的回答,而且非常实际!不过请恕在下愚昧,我对你的第一点不是太明白你提到:
    1. 跨语言的库,函数返回值类型切记使用字符串请问你所指的“字符串” 是pchar 吗,还是有其他?? 难到是String? 可是String是Borland的数据类型如果用了String 要加Borlandmm.dll的 你的意思是............
      

  3.   

    不管是什么类型的,只要是字符串都最好不要用返回值返回。
    实际上VB的String和Delphi的String兼容(仅限于读取数据,写入数据没做过测试,手上没VB);如果你在Delphi的DLL中用了String类型,可以不用Borlandmm.dll,除非你有意要在CB或者Delphi之间使用那些使用了String的函数。如果你要加分,不要加到我这个ID上,加到lexchow,我正努力想让那个ID达到1000分专家分,那样我可以把那上面的7000多份可用分转过来了
      

  4.   

    谢谢 “Eastunfail(龙子龙孙)==(恶鱼杀手)  ” 老兄的帮助!!! 立刻散分!!!!!!!!!!1