• 全部
  • VBS
  • .NET技术
  • VBA
  • VB网络编程
  • VB多媒体
  • VB数据库
  • VB控件
  • VB COM/DCOM
  • VB基础类
  • VB API
  • 问答

救急啊!!!各位大侠帮帮忙吧!!!如何封送多重嵌套的数据结构到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
...全文
26 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wzj008 2005-03-11
haoco()兄弟,什么意思啊
回复
haoco 2005-03-11
up
回复
发帖
VB
创建于2007-09-28

1.6w+

社区成员

VB技术相关讨论,主要为经典vb,即VB6.0
申请成为版主
帖子事件
创建了帖子
2005-03-11 07:04
社区公告
暂无公告