救急啊!!!各位大侠帮帮忙吧!!!如何封送多重嵌套的数据结构到VC的DLL中

wzj008 2005-03-11 07:04:44
以下有GlobData/tGlobData/RoutDtFile三个数据结构,GlobData结构中有整型和字符串两种数据类型,tGlobData是以GlobData为基础的结构数组,最后在RoutDtFile结构中包含了tGlobData结构.

在程序中调用DLL时需要封送RoutDtFile这个数据结构,在VB.NET中函数如下:

Public Declare Function ReadRouteTableData Lib "ACDConsole.dll" (ByVal SockFDas As Integer, ByRef RouteTableData As RoutDtFile, ByRef ErrorCode As Integer, ByRef DetailError As Integer) As Integer

但是每次运行到这里时会出现"System.TypeLoadException: 无法封送类型 RoutDtFile 的字段 GlobalData :该字段的类型定义没有布局信息"这个错误

我在帮助文档里找不到类似的这样的结构的传递的例子,只好在这里拜托各位大侠了!

以下是使用的结构类型


'<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)>
Structure GlobData
Dim ACDGroupNo As Short
<VBFixedArray(2), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=2)> Public dummy6 As String
Dim ShareRate As Short
<VBFixedString(2), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=2)> Public dummy7 As String
End Structure

'<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)>
Structure tGlobData
<VBFixedArray(9), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPStruct, SizeConst:=9)> Dim nGlobData() As GlobData
Public Sub Initialize()
ReDim nGlobData(8)
End Sub
End Structure

'<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)>
Structure RoutDtFile
Dim PilotNo As Integer
Dim RouteNo As Short
<VBFixedString(2), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=2)> Public dummy1 As String
<VBFixedString(5), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=5)> Public Step1 As String
<VBFixedString(3), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=3)> Public dummy2 As String
<VBFixedString(30), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=30)> Public transNo As String
<VBFixedString(2), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=2)> Public dummy5 As String
<VBFixedString(20), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=20)> Public Comment As String
Dim GlobalData As tGlobData

Public Sub Initialize()
GlobalData.Initialize()
End Sub
End Structure
...全文
82 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzj008 2005-03-11
  • 打赏
  • 举报
回复
haoco()兄弟,什么意思啊
haoco 2005-03-11
  • 打赏
  • 举报
回复
up

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧