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

在VB中调用VC++的Dll文件,运行时出现Dll调用约定错误?

楼主ls9d999999(小菜)2002-03-26 15:58:51 在 VB / 基础类 提问

VC++中函数的声明:  
  int   PlayCh(Char   *   Playstr)  
   
  Vb中:  
  Private   declare   function   PlayCh   Lib   "Dllname"   (Byval   Playstr   as   string)  
  as   Integer  
   
  dim   Playstr   as   string  
  Playstr="fdkkdjkf"  
  cc=PlayCh(Playstr)  
   
  运行时出现Dll调用约定错误?是不是参数类型不对?  
  在Foxpro,Vc++中调用正常. 问题点数:100、回复次数:12Top

1 楼kiloculf(落河沉星)回复于 2002-03-26 16:03:13 得分 0

具体看DLL的导出是怎么样的。。。。  
   
  如果是void   function可以。。  
  不是的就不行。Top

2 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2002-03-26 16:07:24 得分 0

试一下:  
  Private   declare   function   PlayCh   Lib   "Dllname"   (Byval   Playstr   as   string)  
  as   LongTop

3 楼gcj123(佛的光辉)回复于 2002-03-26 17:01:08 得分 0

试一下  
  Private   declare   function   PlayCh   Lib   "Dllname"   (Byref   Playstr   as   string)  
  as   LongTop

4 楼tg123(T.G.)回复于 2002-03-26 19:57:22 得分 0

char  
  数组  
  不推荐使用  
  请用  
  int   PlayCh(LPSTR   Playstr)  
  {  
  strcpy(Playstr,"ggg");  
  return   1;}  
   
   
  Private   declare   function   PlayCh   Lib   "Dllname"   (ByVal   Playstr   as   string)as   Long  
   
   
  dim   a   as   string*256  
  Playstr="fdkkdjkf"  
  cc=Tirm(PlayCh(Playstr))  
  Top

5 楼zyl910(编程的乐趣在于编程控制硬件,与用图形学实现绚丽效果)回复于 2002-03-26 20:05:24 得分 0

VC    |    VB6    |   VB.Net  
  int         | Long    |Short  
  unsigned   char    | Byte    |Byte  
  unsigned   short |   Integer   |Short  
  unsigned   int  | Long    |Integer  
  signed   char     | Byte    |Byte  
  signed   short  |   Integer   |Short  
  signed   int   | Long    |Integer  
  _int64     | (无)    |Long  
  long           | Long    |Integer  
  Top

6 楼muqiao(聪明的牛)回复于 2002-03-26 20:32:37 得分 50

这是你的dll中导出的函数少了_stdcall,加上去试试Top

7 楼mazhayang(蚂蚱先生)回复于 2002-03-26 21:00:32 得分 0

1、在.cpp文件中函数声明加winapi(大写)   即       int   WINAPI   PlayCh(Char   *   Playstr)。  
  2、在.def文件中加入  
  EXPORTS  
  PlayCh   @1  
  3、在.h文件中加入:  
  #define   DLLEXPORT   extern   "C"   _declspec(dllexport)  
  DLLEXPORT   int   WINAPI   PlayCh(Char   *   Playstr)。  
  试试  
  Top

8 楼zbde00(为了讨老婆喜欢,努力学习中......)回复于 2002-04-03 17:20:36 得分 0

太过分了,声明中居然没有Alias,而且一大堆人都没有看出来.Top

9 楼gxingmin(小高)回复于 2002-04-03 17:35:12 得分 20

加上约定申明:  
  int   _stdcall   PlayCh(Char   *   Playstr)  
   
  Top

10 楼hdj0569(猫)回复于 2002-04-03 17:36:34 得分 20

muqiao(聪明的牛)说得对  
  这样:  
   
  int   __stdcall   PlayCh(Char   *   Playstr)  
   
  to   mazhayang(蚂蚱先生)  
  因为ls9d999999   (小菜)   在VC++中调用正常,所以应该是导出了。  
   
  Private   declare   function   PlayCh   Lib   "Dllname"   (Byval   Playstr   as   string)   as   Integer  
                  ~~~~~~~~~~~as   Long  
  Top

11 楼gxingmin(小高)回复于 2002-04-03 17:36:56 得分 0

不用Alias也行!Top

12 楼hdj0569(猫)回复于 2002-04-03 17:37:52 得分 0

最后的as   Integer改为as   LongTop

13 楼joyplay(想吃老虎的小猪)回复于 2002-04-03 18:00:29 得分 10

mazhayang(蚂蚱先生)   说的也没错   WINAPI   是   __stdcallTop

相关问题

  • vb调用vc++的dll
  • vc调用vb的dll
  • VC中调用VB生成的DLL(java调用VB的DLL)
  • vb调用vc的DLL问题
  • 如何在vb中调用vc的DLL
  • vb如何调用vc做的dll???
  • VB里怎样调用VC的DLL?
  • 还是VB调用VC的DLL问题
  • VB调用VC编写的DLL
  • vc中怎样调用vb写的dll

关键词

  • vc++
  • 文件
  • 函数
  • vc
  • vb
  • dll
  • playstr
  • playch
  • 调用
  • dllname

得分解答快速导航

  • 帖主:ls9d999999
  • muqiao
  • gxingmin
  • hdj0569
  • joyplay

相关链接

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

广告也精彩

反馈

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