软件注册站
热情软件屋

 
VB中调用DLL显示Bad DLL calling convention
编号: QA001383    
建立日期: 1999年7月22日 最后修改日期: 2005年8月22日
所属类别: Visual Basic - 错误信息
   
    使用的操作系统:Win95/98
    使用的编程工具:VB6,VC6
    遇到的问题 :鉴于VB的速度和在位操作方面的不足,我不得不用VC来编写一个DLL来实现一些功能。可在VB中调用是总是说"Bad DLL calling convention"。
    在VC中的源程序如下:(一个极其简单的试验用的函数)
    #define DllExport __declspec( dllexport )
    
    DllExport int Gen(int a)
    {
     return 2;
    }
    
    DllExport int Gen2(void)
    {
     return 1;
    }
    
    在VB中声明如下:
    Declare Function Gen Lib "Paper.dll" (ByVal a As Integer) As Integer
    Declare Function Gen2 Lib "Paper.dll" () As Integer
    调用程序:
    
    Dim SS As Integer
     SS = 1
     SS= Gen2() //调用成功
     SS = Gen(SS) //一到这就报错,?????????(Stone)
   
    产生这条错误有几个原因:
    1、参数声明错误,C语言的int型对应为VB的Long型。在VB中声明如下:
     Declare Function Gen Lib "Paper.dll" (ByVal a As long) As long
     Declare Function Gen2 Lib "Paper.dll" () As long
    2、DLL中的函数没有使用stdcall调用方式。
    VB的错误信息指的是第二条原因。你定义的调用方式为__declspec,而VB要求必须是stdcall方式,这对没有参数的函数影响不大,但对有参数的函数有影响。你可以参照QA000072 "VB和VC混合编程"修改你的VC程序。

    

此问题由李海、cutepig回答。

附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 错误信息, error, error message, link, compile, runtime

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio