VB编写标准DLL实现DELPHI DLL报内存错误

求助各位大神,有个delphi7写的标准DLL,我需要用VB6实现,形式如下
//虚假实现
function WriteCard(StrCardNo: Pchar): Integer; stdcall;
begin
Result := 0;
end;

//虚假实现
function ReadCard(StrCardNo: Pchar): Integer; stdcall;
begin
  StrPCopy(StrCardNo, '12345678');
  Result := 0;
end;

因为要采用标准DLL,非ActiveX dll,从网上找了相关方法,我的测试方法如下:
1。ThirdPartWriteReadCard.dll这个是要实现的DLL,厂家给出DELPHI源码,即编译后的DLL
2。ClientPrj.exe厂家贴心给出了测试DEMO,用来测试调用DLL,显示返回值

3。我在VB里做了DEMO实现,如下,一切正常
Option Explicit

Private Declare Function WriteCard Lib "ThirdPartWriteReadCard.dll" (ByVal StrCardNo As String) As Long
Private Declare Function ReadCard Lib "ThirdPartWriteReadCard.dll" (ByVal StrCardNo As String) As Long

Private Sub Command1_Click()
    On Error GoTo err
    Dim StrCardNo As String
    StrCardNo = Space$(255)


    If ReadCard(StrCardNo) <> 0 Then MsgBox "error"
'    strCardNo = StringFromPtr(StrPtr(strCardNo))

    MsgBox "卡号:" + StrCardNo + "。"
    Exit Sub
err:
    MsgBox err.Description
End Sub

4。开始写VB版DLL,并编译为标准DLL,非COM
Public Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, ByVal Source As Any, ByVal Length As Long)

' - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Private Sub Main(): End Sub   '请不要修改或删除这一行!!!
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'在这后面写上你的其它 Sub/Function ,或者全部写到其它模块中

'//虚假实现
Public Function ReadCard(ByVal lpCardNo As Long) As Long

    ReadCard = 0
    Dim curCardNo As String
    curCardNo = "bb22303**230304"

    CopyMemory ByVal lpCardNo, ByVal curCardNo, LenB(curCardNo)
    '====上面代码VB DEMO可以获取字符串,delphi报 vbmsvm60.dll内存写错误
End Function

vb没法编写“标准dll”,即便通过网上所谓的修改link.exe的方式强制输出导出符号,生成的dll也只能给别的vb程序调用,因为vb程序运行必须先初始化vb虚拟机,这个过程只有vb的exe会做,你生成的所谓dll,如果是delphi调用,没有这个初始化就出错了。
微软官方也从来没有说vb可以写什么标准dll