CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  COM/DCOM/COM+

vb调用vc编写的com问题

楼主bg205(chenyx)2006-03-03 21:54:29 在 VB / COM/DCOM/COM+ 提问

vc代码如下:  
  add.def如下:  
  LIBRARY             "add.DLL"  
  EXPORTS  
                    ......  
                    ......  
  add   @5  
  sayhello   @6  
   
   
  add.cpp文件  
  .....  
  .....  
  //两个整数相加  
  int   add(int   a,int   b)  
  {  
  return   a+b;  
  }  
   
  //返回"hello"  
  char*   sayhello()  
  {  
  return   "hello";  
  }  
   
   
   
  vb代码如下:  
  Private   Declare   Function   add   Lib   "com/Debug/add.dll"   (ByVal   a   As   Integer,   ByVal   b   As   Integer)   As   Integer  
  Private   Declare   Function   sayhello   Lib   "com/Debug/add.dll"   ()   As   String  
   
  Private   Sub   Command1_Click()  
  Label1.Caption   =   add(2,   3)’调用正常  
  Label2.Caption   =   sayhello()'问题出现在此,调用后没显示  
  End   Sub  
   
   
   
  是不是调用参数类型出错  
  问题点数:50、回复次数:3Top

1 楼rainstormmaster(暴风雨 v2.0)回复于 2006-03-04 19:12:04 得分 0

Private   Declare   Function   add   Lib   "com/Debug/add.dll"   (ByVal   a   As   long,   ByVal   b   As   long)   As   long  
  Private   Declare   Function   sayhello   Lib   "com/Debug/add.dll"   ()   As   long  
   
  sayhello返回的是字串的指针,所以你要用copymemory取出字串内容,大致过程如下,先用lstrlen计算字串的长度(字节数),然后给字串分配一个缓冲区,接着用copymemory取得字串内容(一般是ansi字串),最后用strconv将ansi字串转为unicode字串Top

2 楼rainstormmaster(暴风雨 v2.0)回复于 2006-03-04 19:15:04 得分 45

这有一个例子,你可以参考一下:  
  Option   Explicit  
   
  Private   Declare   Function   lstrlenA   Lib   "kernel32"   (ByVal   lpString   As   Long)   As   Long  
  Private   Declare   Sub   RtlMoveMemory   Lib   "kernel32"   (Destination   As   Any,   Source   As   Any,   ByVal   Length   As   Long)  
   
  Public   Function   StringFromPtr(ByVal   lPtr   As   Long)   As   String  
      Dim   lLen   As   Long  
       
      lLen   =   lstrlenA(lPtr)  
      StringFromPtr   =   Space$(lLen)  
      RtlMoveMemory   ByVal   StringFromPtr,   ByVal   lPtr,   lLen  
  End   FunctionTop

3 楼myxmouse(小老鼠(我的星怎么是黑的?★★★★★))回复于 2006-03-30 22:27:29 得分 5

路径不对?????Top

相关问题

  • vc怎么调用vb写的com
  • 如何在VC中调用VB开发的COM(ActiveX Dll)?
  • VB中的Com组件如何在VC中调用???
  • 急!! 如何在VC++中调用 VB COM组件, 谢谢
  • VC作的COM用VB如何调用,高分求教
  • 在delphi中如何调用COM组件(用vb或vc写的)
  • vb调用vc编的activex
  • vb调用vc++的dll
  • vc调用vb的dll
  • 用vc做了个automation的com组件,用mfc可以调用,但是用vb调用不了

关键词

  • debug
  • dll
  • 调用
  • 字串
  • sayhello
  • 如下
  • byval
  • add
  • lib
  • declare function

得分解答快速导航

  • 帖主:bg205
  • rainstormmaster
  • myxmouse

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

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