CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

请教简单的指针问题。(在线等待)

楼主yanghuanji(yanghuanji)2004-02-01 14:38:09 在 .NET技术 / VB.NET 提问

背景:  
            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   &param,然后妥善发布该结构体,就可以使用上述语法了。如果你想不发布结构体,然后在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

相关问题

  • 关于指针的非常简单的问题.(在线等待)
  • 关于字符指针的简单问题?在线等待,急用!(跟者有分)
  • 在线等待的简单问题——在类中不能使用函数指针吗?
  • 在线等待!鼠标指针问题!
  • 关于返回指针。。。。。(在线等待。。。
  • 关于返回指针。。。。。(在线等待。。。
  • 指针数组(在线等待)?
  • 简单的问题,请问怎样做一个指针变量,指向不同的窗体变量?在线等待
  • 真诚请教指针问题,再次感谢,在线等待
  • 在线等待,请教一个关于this指针的问题。。。。。。。

关键词

  • c++
  • vb.net
  • 指针
  • 结构
  • 代码
  • vb
  • baseinfo
  • createusercard
  • ancard
  • 结构体

得分解答快速导航

  • 帖主:yanghuanji
  • Ninputer
  • duibudui

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo