| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 511 人关注过本帖
标题:为何把整个自定义结构体传递给动态链接库函数作参数时出错?(代码在贴内)
只看楼主 加入收藏
shi781203
Rank: 2
来 自:广东省
等 级:论坛游民
帖 子:112
专家分:50
注 册:2011-3-18
结帖率:37.14%
收藏
 问题点数:0 回复次数:3 
为何把整个自定义结构体传递给动态链接库函数作参数时出错?(代码在贴内)
以下代码进行编译时总是弹出提示“只有定义在公共对象模块中用户定义类型和变体类型相互转换或传递给后期绑定功能”

Dim Pais(52) As PaiType    '定义了52个结构数组元素用作牌信息
Dim DllObj as Object    '定义一个Dll动态链接库对象
Dim StrName as String

Private Type PaiType    '定义一个结构体为PaiType
    PaiZhi As Integer
    PaiHua As Integer
    Pai As Integer
End Type

Private Sub Form_Load()
   StrName = "GameLan"
   Shell ("regsvr32 " & App.Path & "\" & StrName & ".dll /s")    '动态链接库链接
   Set DllObj = CreateObject(StrName & ".GameClass")
……
……
……
    Call DllObj.XiPaiGuoCheng(Pais)    ’执行动态链接库的洗牌过程--实参为结构数组名(编译时代码停在此行的“Paisi”中)
End Sub

'动态链接库文件GameLan.Dll内的函数
Public Sub XiPaiGuoCheng(Pais_c() As PaiType)   '定义洗牌过程--形参为区别实参在结构数名后加了“_c”
……
……
……
End Sub
'上述结构体如果只传递在当前窗体中的函数就可以通过编译并且能正常运行!
搜索更多相关主题的帖子: Object 结构体 动态 信息 用户 
2013-11-20 13:17
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 
公共结构体请声明在模块中。
2013-11-20 21:58
shi781203
Rank: 2
来 自:广东省
等 级:论坛游民
帖 子:112
专家分:50
注 册:2011-3-18
收藏
得分:0 
以下是引用bczgvip在2013-11-20 21:58:47的发言:

公共结构体请声明在模块中。

请问你所说的模块在哪里?请引用我的例子说明一下吧!

飞点燃费盐--历史上至有型的计算机病毒(能感染你是我的荣幸,也是你的光荣!)
2013-11-21 15:15
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 
呵呵,看来被类型库折磨得不轻啊。
把结构注释掉,用动态库自配的类型。F2 看看对象吧。
2013-11-22 06:20
快速回复:为何把整个自定义结构体传递给动态链接库函数作参数时出错?(代码在贴 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018694 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved