CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

VB 调用DLL小问题

楼主aguo2005(海纳百川 有容乃大 )2006-03-14 16:16:00 在 VB / 基础类 提问

 
  我用VC做了个DLL   其中有函数   char   *   Float_Hex(float   fFloat)   目的是返回一个十六进制的数串   如“12D7831A”             因为DLL中不能使用CString   所以我的返回值是一个指针   char   型数组的首地址。。  
    char   strHex[]={0x31,0x32,0x44,0x37,0x38,0x31,0x41}  
   
  想用VB调用此函数。。应该怎么声明   怎么接收返回值呢??  
   
  多谢!! 问题点数:50、回复次数:6Top

1 楼benyfeifei(狒狒)回复于 2006-03-14 16:30:41 得分 5

Pulic   Declare   Function   Float_Hex   Lib   "YourDll.dll"(Byval   fFloat   as   Single)   As   StringTop

2 楼supergreenbean(超级绿豆(MSMVP - VB) - 升级归来~)回复于 2006-03-15 10:02:55 得分 20

Private   Declare   Sub   CopyMemory   Lib   "kernel32"   Alias   "RtlMoveMemory"   (Destination   As   Any,   Source   As   Any,   ByVal   Length   As   Long)  
   
   
  declare   function   Float_hex(byval   fFloat   as   single)   as   long  
   
  dim   lpBuf   as   long  
  dim   s   as   string   *   8  
  lpBuf=Float_hex(123.32423)  
  copymemory   byval   s,byval   lpBuf,8  
  debug.print   sTop

3 楼aguo2005(海纳百川 有容乃大 )回复于 2006-03-15 10:15:15 得分 0

我试一下;可是VB来是提示   内存访问出错?   请各位给点意见Top

4 楼aguo2005(海纳百川 有容乃大 )回复于 2006-03-15 10:59:14 得分 0

TO     supergreenbean(超级绿豆(MS   MVP   -   VB)   -   暑去冬来,该吃补药了……)    
    你的方法我试过了   但是结果一些乱码   我该在哪里处理一下呢??Top

5 楼supergreenbean(超级绿豆(MSMVP - VB) - 升级归来~)回复于 2006-03-15 11:27:11 得分 10

因为你的字符串是在函数里面分配的,所以一出函数,那段内存就被喀嚓了.  
   
  你需要改一下你的c函数,要么通过其他方法分配内存,要么通过参数传递接收缓冲区的地址进来Top

6 楼of123()回复于 2006-03-15 11:48:41 得分 15

1   必须标准调用:char   *   __stdcall   Float_Hex(float   fFloat)    
   
  2   声明:  
  Public   Declare   Function   Float_Hex(Byval   fFloat   As   Single)   As   String  
   
  3  
  Dim   strHex   As   String   *   16  
   
  strHex   =   Float_Hex(1234)  
   
  不过,一般的调用规范是:  
  int   __stdcall   Float_Hex(float   fFloat,   char   *   cHex)  
  Public   Declare   Function   Float_Hex(Byval   fFloat   As   Single,   cHex   As   String)   As   Long  
   
  Dim   Ret   As   Long,   strHex   As   String   *   16  
   
  Ret   =   Float_Hex(12345,   strHex)Top

相关问题

  • vb 调用 VC7 dll
  • vb 调用 VC7 dll
  • dll调用的vb转delphi
  • VB里怎样调用DLL
  • vb调用dll的问题
  • VB调用 dll问题
  • vb调用C写的DLL
  • vb调用vc++的dll
  • vc调用vb的dll
  • VC中调用VB生成的DLL(java调用VB的DLL)

关键词

  • 函数
  • 内存
  • vb
  • dll
  • ffloat
  • 调用
  • hex
  • strhex
  • longdim
  • float

得分解答快速导航

  • 帖主:aguo2005
  • benyfeifei
  • supergreenbean
  • supergreenbean
  • of123

相关链接

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

广告也精彩

反馈

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