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

VC编写dll返回多个字符串给VB程序调用?

楼主fangyc()2006-03-07 16:43:28 在 VC/MFC / 进程/线程/DLL 提问

在C语言中函数的定义如下:  
  int   Test(char   *   Cstr1,char   *   Cstr2)  
  {  
  strcpy(Cstr1,"aaaaaaaaaa");  
                    strcpy(Cstr2,"bbbbbbbbbb");  
  return   0;  
  }  
   
  我在VB中如下声明:  
  Declare   Function   Test   Lib   "Test.dll"   (ByRef   Cstr1   As   string,ByRef   Cstr2   As   string)   As   Integer  
   
  然后如下使用:  
  Dim   rtn   As   Integer  
  Dim   ls_str1,ls_str2   As   String  
  rtn   =   Test(ls_str1,ls_str2)'调用dll函数   但是这里会出错,为什么会获取不到   aaaaaaaaaa和bbbbbbbbbb?  
  MsgBox   ls_str1  
  MsgBox   ls_str2  
   
  请各位指点一下!!  
  问题点数:20、回复次数:4Top

1 楼NOLA(无语)回复于 2006-03-07 16:53:42 得分 0

在Dll中函数不导出是不能被调用的Top

2 楼zhujiujun(<<<<<<<<动感光波>>>>>>>>)回复于 2006-03-07 20:45:26 得分 20

我也正在写dll给vb用,在C代码中必须申明为__stdcall,并且在DEF文件中导出  
   
  extern   "C"  
  {  
  _declspec(dllexport)   void   __stdcall   Clipboard_Backup();  
  _declspec(dllexport)   void   __stdcall   Clipboard_Restore();  
  }  
   
  void   __stdcall   Clipboard_Backup()  
  {  
  theClipboard.Backup();  
  }  
   
  void   __stdcall   Clipboard_Restore()  
  {  
  theClipboard.Restore();  
  }  
   
  ~~~~~~~~~~~~~~~~~~~~~~~~  
  DEF文件  
  LIBRARY   ClipboardBackup  
  EXPORTS  
  Clipboard_Backup  
  Clipboard_Restore  
   
  Top

3 楼fangyc()回复于 2006-03-08 09:01:44 得分 0

多谢,zhujiujun!  
  这个我都已经声明过了,问题我现在已经解决了,前面加上     __stdcall并且要在参数上加上   2个**   才能正确调用!  
  正确如下:  
  int   Test(char   **   Cstr1,char   **   Cstr2)  
   
  不过新的问题又出来了,为什么我在PB中不能调用这个动态库函数,不能返回值,而在VB中调用就能返回。  
   
  Vb调用  
   
  Dim   ls_str1,   as   string   *   20  
  Dim   ls_str2   As   String   *   20  
  rtn   =   Test(ls_str1,ls_str2)//这样调用后可以得到   aaaaaaaaaa和bbbbbbbbbb?  
   
  PB调用  
   
  string   ls_str1,ls_str2  
  ls_str1   =   space(20)  
  ls_str2   =   space(20)  
  rtn   =   Test(ls_str1,ls_str2)//却不能得到   aaaaaaaaaa和bbbbbbbbbb?  
   
  PB声明如下:  
  Function   Integer   Test   (Ref   String   str1,Ref   string   str2)   library   "SmsApiDll.dll"  
   
   
  请高手指点  
   
  Top

4 楼fangyc()回复于 2006-03-08 12:54:24 得分 0

顶!Top

相关问题

  • 用VC怎么给Vb做 字符串参数 的dll??
  • VB如何向VC编写的DLL传递字符串参数?
  • VB如何向VC编写的DLL传递字符串参数?
  • VC编写的DLL给VB调用,输出字符串的时候为什么字符串会有尾巴呢
  • vb 调用 VC 编译成功的 DLL 字符串处理函数出错
  • vb 中调用vc写的dll,如何传递字符串数组,,
  • 用VB调用VC作的DLL,问题是:VB中的字符串数组如何传递到VC中??捧场!!!!
  • 请问谁知道在VC的dll中如何和VB通信,主要是字符串如何传递!
  • 怎样用VC做一个能在参数中返回字符串的DLL,供VB调用
  • VC编写的DLL如何向调用它的VB程序返回字符串信息?

关键词

  • 函数
  • vb
  • dll
  • 调用
  • ls
  • cstr
  • bbbbbbbbbb
  • aaaaaaaaaa
  • stdcall clipboard
  • 如下

得分解答快速导航

  • 帖主:fangyc
  • zhujiujun

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

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