请教简单的指针问题。(在线等待)
背景:
1,用c++build做的COM组件。
2,其中COM中有一个类的一个方法。
3,方法中传递一个结构指针。
4,在VB.NET 中调用这个类的方法传递结构指针。
5,com类的头文件如代码所示。
代码:
'----------------------------------------------------------------------
'头文件声明
int CreateUserCard(RAW_USER_CARD_BASEINFO*);
'---------------------------------------------------------------------
'调用代码
Imports ICOprX
Imports Card.Service.Struct
Namespace Card.Service
Public Class CardRWer
Inherits CoICardXClass
Public Overloads Function CreateUserCard() As Integer
Dim anCard As New RAW_USER_CARD_BASEINFO
MyBase.CreateUserCard(anCard) '重点代码
End Function
End Class
End Namespace
'RAW_USER_CARD_BASEINFO是一个结构体
'----------------------------------------------------------------------
现象:
问题:1,在.net编译环境中显示“CreateUserCard(ByRef Piof as Byte)As System.Unit16”
2,这个Byte是否是一个指针呢?
3,系统显示“anCard类型不是一个Byte”。
4,如果vb.net连这么简单的指针处理都问题多多,那我就要考虑是否要改换工具了。
5,整个的持续就卡在这里了,在完不成那么就要走人了。请各位高手指点。
问题点数:20、回复次数:9Top
1 楼yanghuanji(yanghuanji)回复于 2004-02-01 15:18:23 得分 0
upTop
2 楼Ninputer(装配脑袋)回复于 2004-02-01 15:45:41 得分 0
Byte是无符号8位整数,你的结构体可以转化为无符号8位整数吗?你为什么用New声明结构体呢,说明那不是一个结构体,而是一个类。
Top
3 楼Ninputer(装配脑袋)回复于 2004-02-01 15:51:54 得分 0
你在程序开头写上Option Strict Off,碰碰运气吧Top
4 楼yanghuanji(yanghuanji)回复于 2004-02-01 16:02:33 得分 0
1,结构声明有误,多谢Ninputer指正。
2,使用Option Strict Off,没有效果。
3,这是一个关于指针的问题,在我看来是一个基本的必备知识。
3,csdn上面已经有很多了,但是都说的不是很明白。
4,请各位高手再指教。
Top
5 楼ajex(仙桃人在珠海)回复于 2004-02-01 16:10:32 得分 0
apply StructLayout attribute your structTop
6 楼Ninputer(装配脑袋)回复于 2004-02-01 16:14:53 得分 10
指针也是有类型的Byte的指针和RAW_USER_CARD_BASEINFO的指针是不一样的。为什么会出现这种问题?多半是你发布结构体的时候没有注意到什么。你可不可以将RAW_USER_CARD_BASEINFO* param改成RAW_USER_CARD_BASEINFO ¶m,然后妥善发布该结构体,就可以使用上述语法了。如果你想不发布结构体,然后在VB中定义这个结构体再传递过去,我看你还是换一个语言吧,managed与非managed通讯没有那么智能。Top
7 楼yanghuanji(yanghuanji)回复于 2004-02-01 17:07:35 得分 0
1,如果我不用com,而用dll里的函数,情况是不是和这个一样?
2,我公司开发小组成员用的工具都不一样,所以我用vb.net来调用另一个同事用c++做的模块。
3, 针对这中情况,希望各位给点意见。Top
8 楼yanghuanji(yanghuanji)回复于 2004-02-01 17:28:35 得分 0
1,按照地址传递和按照引用传递在性质上不是一样的吗?
2,从这层来说学习编译底层的东东就很有必要了,那么请问学习底层的方法论是什么?Top
9 楼duibudui()回复于 2004-02-01 19:38:23 得分 10
把com接口改了,用字符串,数组,Top




