WINAPI  int VCFun(LPCTSTR sString); 
上面用VC编写的函数返回值为int时,在VB中声明:
Private Declare Function VCFun Lib "VCFun.dll" (ByVal sString As String) As Long
就可以正常调用;但是,如果我想用VCFun返回一个字符串,而不是int型,该怎么声明啊??下面的两种方式都不行:
WINAPI LPCTSTR VCFun(LPCTSTR sString); 
WINAPI String VCFun(LPCTSTR sString); 到底该怎么声明啊?大侠请指教!谢谢先

解决方案 »

  1.   

    直接返回char *是不行的,VB不支持这种做法。
    大多数都是在VB中先给字符串分配空间,再传递给VC,在DLL中可以修改字符串,但不能超过VB中分配的空间。如果你希望直接返回字符串,必须使用BSTR类型,这实际上就是VB中的字符串所使用的类型。下面是一个简单的例子: 
         
         EXTERN_C BSTR WINAPI RetStr() 
         { 
             char *str="1234567890"; 
             return SysAllocString((BSTR)str); 
         }
      

  2.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=183789
      

  3.   

    上面的即指出:
    同时VB也必须使用ByRef约定
      

  4.   

    是啊,VB不支持指针,字符传递是个大问题,调入DELPHI DLL时也一样式出问题。