我正在將最初寫入vb6的應用程序轉換爲vb.net。這個應用程序做的一件事是它發送一個「Type」對象到一個dll。我試圖將類型轉換爲一個結構和p /調用dll,但它似乎並沒有工作。我已經堅持了一個星期的任何幫助將非常感激將vb6類型轉換爲VB.net或C#結構
這裏是該類型
'Define WICS Communications Control Block (CCB).
Type WicsCCBType ' Create user-defined type.
CCBNum As String * 1
CCBVer As String * 1
Resp1 As String * 4
Resp2 As String * 4
PLUA As String * 8
LLUA As String * 8
Mode As String * 8
ReqMax As String * 5
ResMax As String * 5
End Type
VB6的代碼,並在這裏是DLL是如何調用
Private Declare Sub WICSRASP Lib "wicsrasp.dll" (MyWicsCCB As WicsCCBType)
WICSRASP MyWicsCCB
這是我用vb.net試過但它不起作用
'Define WICS Communications Control Block (CCB).
<System.Runtime.InteropServices.StructLayoutAttribute(_
System.Runtime.InteropServices.LayoutKind.Sequential, _
CharSet:=System.Runtime.InteropServices.CharSet.[Unicode])> _
Structure WicsCCBType ' Create user-defined type.
<MarshalAs(UnmanagedType.ByValTStr, sizeconst:=1)> Dim CCBNum As String
<MarshalAs(UnmanagedType.ByValTStr, sizeconst:=1)> Dim CCBVer As String
<MarshalAs(UnmanagedType.ByValTStr, sizeconst:=4)> Dim Resp1 As String
<MarshalAs(UnmanagedType.ByValTStr, sizeconst:=4)> Dim Resp2 As String
<MarshalAs(UnmanagedType.ByValTStr, sizeconst:=8)> Dim PLUA As String
<MarshalAs(UnmanagedType.ByValTStr, sizeconst:=8)> Dim LLUA As String
<MarshalAs(UnmanagedType.ByValTStr, sizeconst:=8)> Dim Mode As String
<MarshalAs(UnmanagedType.ByValTStr, sizeconst:=5)> Dim ReqMax As String
<MarshalAs(UnmanagedType.ByValTStr, sizeconst:=5)> Dim ResMax As String
End Structure
這裏是我試圖稱之爲的地方
<System.Runtime.InteropServices.DllImportAttribute("C:\windows\system32\wicsrasp.dll")> _
Public Shared Sub WICSRASP(
ByRef CCB As WicsCCBType,
ByRef Request As DAWicsRequestType,
ByRef Response As DAWicsResponseType)
End Sub
Dim CCB As New modWICSDiary.WicsCCBType()
CCB.CCBNum = "B"
CCB.CCBVer = "2"
CCB.LLUA = " "
CCB.Mode = "CICSMO2 "
CCB.ReqMax = "2100 "
CCB.ResMax = "2100 "
CCB.Resp1 = "0 "
CCB.Resp2 = "0 "
CCB.PLUA = "WICSPLU "
NativeMethods.WICSRASP(CCB)
至於價值觀,相同的值提前
你需要更加努力。提供它如何完全失敗。 –
說實話,你不應該試圖創建一個.NET版本的VB6結構,你應該創建一個傳遞給WICSRASP的C數據結構的.NET版本。如果你有這個文件(比如頭文件),那麼這會更容易。 – tcarvin