写DLL给VB用,不是什么难题,但我们要做到字符变量,从FreeBasic到VB6,从VB6到FreeBasic,在VB6端无痛使用,那就要费点功夫了。
VB6代码:直接写 String
Private Declare Function GetStr Lib "FBtoVB.dll" Alias "GETSTR@0" () As String '返回字符串
FreeBasic和VB6的字符变量的内存格式是不同的,因此我们要在FreeBasic的地方搞个转换函数。
FB代码:
'=====================关键函数================
'--------------------------------------------------------------------------
Function BStrToString(nBStr As BStr) As String '将VB里的字符串转换为FB里使用的字符串
Dim L As Long =Peek(Long,Cast(UInteger,nBStr) -4)
Dim ss As String = String(L,0)
memcpy StrPtr(ss),nBStr,L
Function = ss