CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

vb 调用 VC 编译成功的 DLL 字符串处理函数出错

楼主polytrans(polytrans)2001-03-18 00:42:00 在 VC/MFC / 基础类 提问

我编写了一段   VC   函数程序段,很简单,就是通过  
  该函数的唯一一个字符串,从该程序段中返回一个  
  字符串“Hello!”。该程序段作为一个   DLL   文件  
  的一部分似乎编译成功。但在用   VB   调用时,却  
  使系统出错。为什么?还请明眼人帮忙。  
   
   
  DLL   文件中的部分   VC++   程序段如下:  
   
  double   EXPORT     fstrcmp(char   *string1)  
  {  
      strcpy   (string1,   "Hello!");  
      return   TRUE;  
  }  
   
  调用   DLL   文件中   fstrcmp   函数的   Vb   程序段如下:  
   
  Private   Declare   Function   fstrcmp   Lib   "Gao.dll"   (ByRef   s1   As   String)   As   Double  
   
  Private   Sub   Command1_Click()  
  x="Ninhao!"  
  ret   =   fstrcmp(x)  
  msgbox   x  
  End   Sub  
  问题点数:20、回复次数:8Top

1 楼NowCan(城市浪人)回复于 2001-03-18 10:06:00 得分 2

Private   Sub   Command1_Click()  
  dim   x   as   string       '加一句看看  
  x="Ninhao!"  
  ret   =   fstrcmp(x)  
  msgbox   x  
  End   Sub  
  Top

2 楼polytrans(polytrans)回复于 2001-03-18 11:22:00 得分 0

试过了,不行。我知道好象是字符串指针的毛病,但就是不知道怎样改Top

3 楼rememberME(wfj)回复于 2001-03-18 14:41:00 得分 10

用引用型试试。Top

4 楼cjm()回复于 2001-03-18 19:46:00 得分 2

看是不是char   和bstr的毛病,你可以用以下方式试一下:  
  double   EXPORT     fstrcmp(BSTR   *string1)  
  {  
      _bstr_t   aa;  
   
      strcpy   (string1,   "Hello!");  
      return   TRUE;  
  }  
   
   
  Top

5 楼cjm()回复于 2001-03-18 19:51:00 得分 2

看是不是char   和bstr的毛病,你可以用以下方式试一下:  
  double   EXPORT     fstrcmp(BSTR   *string1)  
  {  
      _bstr_t   aa("Hello!");  
     
    BSTR   cc=(BSTR)aa;  
   
    *string1=cc;  
   
   
      return   TRUE;  
  }  
   
   
  Top

6 楼In355Hz(好象一条狗)回复于 2001-03-18 22:19:00 得分 2

我不太懂VB,但是VC中把按如下方式初试化的指针:char   *   pStr=   "NinHao";  
  处理为字符串常量,不允许修改(如pStr[3]   =   'd'就会报错),所以如果函数要修改传入的字串时,要这样做:  
  char   pStr[20];  
  strcpy(pStr,"NinHao");  
  ret   =   fstrcmp(pStr);  
  如果VB和VC的常量处理方式一样的话,可能也有这个问题。不过我对VB的变量处理方式一无所知,以上完全是猜测,见笑了!Top

7 楼dawnsun(知之不多)回复于 2001-03-18 22:44:00 得分 2

查查你的EXPORT宏是不是有extern   "C".Top

8 楼polytrans(polytrans)回复于 2001-03-20 19:50:00 得分 0

还是   rememberME   一语道破天机,加十分,其他各位热心参与,各给2   分,现程序修改如下:  
   
  DLL   文件中的部分   VC++   程序段如下:  
   
  double   EXPORT     fstrcmp(LPCSTR&   string1)     《========这是关键  
  {  
      strcpy   (string1,   "Hello!");  
      return   TRUE;  
  }  
   
  调用   DLL   文件中   fstrcmp   函数的   Vb   程序段如下:  
   
  Private   Declare   Function   fstrcmp   Lib   "Gao.dll"   (ByRef   s1   As   String)   As   Double  
   
  Private   Sub   Command1_Click()  
  x="Ninhao!"  
  ret   =   fstrcmp(x)  
  msgbox   x  
  End   SubTop

相关问题

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

关键词

  • vc++
  • 函数
  • 文件
  • vb
  • vc
  • 修改
  • dll
  • fstrcmp
  • 字符串
  • ninhao

得分解答快速导航

  • 帖主:polytrans
  • NowCan
  • rememberME
  • cjm
  • cjm
  • In355Hz
  • dawnsun

相关链接

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

广告也精彩

反馈

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