C++原型
#define XY_API __declspec(dllimport)
XY_API BOOL XY_GetTotalCount(WORD* lpTotalCount);函数都封装在xyapi.dll中,请问如何在VB中调用?
直接调用出现约定错误

解决方案 »

  1.   

    XY_GetTotalCount这个函数是导入的不是导出的吧
      

  2.   

    你先查看一下DLL有哪些导出函数,然后如果函数不是__stdcall调用约定的,那可以这样处理
    http://expert.csdn.net/Expert/topic/2794/2794182.xml?temp=.4021417
    如果,参数写的不对也有可能出现调用约定错误的
      

  3.   

    用vc tools目录下的depends工具(开始菜单例可以找到)打开编译好的dll,
    在右侧有Ordinal^,Hint等项,复制Function的内容,如:?XY_GetTotalCount@@YAHXZ
    vb中建立工程
    对引用的进行声明
    Public Declare Function XY_GetTotalCount Lib "XXX.dll" Alias "?XY_GetTotalCount@@YAHXZ" (byval lpTotalCount as long) As boolean
      

  4.   

    我用depand 试了,函数名就是 XY_GetTotalCount
    如何判断是否__stdcall?
      

  5.   

    声明成这样
    Public Declare Function XY_GetTotalCount Lib "XXX.dll" (ByRef lpTotalCount as Integer) As Long如果使用的时候出现调用约定错误,那9成就是原dll使用了__cdecl调用约定
      

  6.   

    STDAPI BOOL XY_GetTotalCount(WORD* lpTotalCount);
    {
    ....}在DEF文件中定:EXPORTS
        ; Explicit exports can go here
        XY_GetTotalCount PRIVATE在VB中定义如下:Declare Function XY_GetTotalCount Lib "xxx.dll" () As Long
    应该就可以了吧。
      

  7.   

    应该是Declare Function XY_GetTotalCount Lib "xxx.dll" As Long这样,不知可不可以