有个用C写的函数怎么在VB在声明成API然后调用?
例如: char *  GetTime(BYTE ComPort,char * DateTime)
请具体点,谢谢

解决方案 »

  1.   

    Public Declare Function GetTime Lib "you.dll" Alias "GetTime" (ComPort as byte,byval DateTime as string) As string试一下
      

  2.   

    参数中的char *定义为ByVal DateTime As Long,传递参数的时候传StrPtr(xxx)
    或者定义为DataTime As Any,传递参数的时候,把变量设置为字节数组,然后传递数组中的第一个
    直接定义为As String我没试过哦,应该可以的吧~~~如果不行的话,试试把ByVal改成ByRef,即把传值改为传址返回值是指针类型,即函数类型应该定义为As Long
    即返回值为一个指向字符串的内存地址,用CopyMemory复制过来就可以了
      

  3.   

    不知道是对方提供的借口函数说明有错还是我太笨,
    我用depends.exe 打开 看了那个DLL库 function里面显示的是
    _AddMoney@12
    _ClearALLXc@4
    _ClearFJSE@8
    _ClearJLS@4
    _DKGF@12
    _FK@16
    _Get3JE@20
    _GetFJSE@12
    _GetJLS@8
    _GetLS@16
    _GetMaxJH@8
    _GetSvrSD@8
    _GetSvrTime@8
    _GetYe@16
    _RealTime@8
    _ResetServer@8
    _RyXe@12
    _Set3JE@20
    _SetCJ@8
    _SetFJMM@8
    _SetKZT@8
    _SetMaxJH@8
    _SetSDXC@8
    _SetSvrTime@4
    没有一个叫 GetTime的函数在可以知道的是这个函数跟_GetSvrTime@8有关,请问到底是要引用哪个才对,怎么引用?
      

  4.   

    那是你的 动态库 写错了吧 在DLL传STRING 最烦人了 编码不统一不行你把那个DLL 传给我 我看下
      

  5.   

    怎么跟你联系啊,给我你的QQ还是MSN还是邮箱,都可以啊,谢谢啊!
      

  6.   

    Public Declare Function GetTime Lib "you.dll" Alias "_GetTime@8" (ComPort as byte,byval DateTime as Long) As Long你要用C的方式声明你的导出函数,否则编译出来就变成 _GetTime@8这样子的了
    extern “C” __declspec(dllexport) char *  GetTime(BYTE ComPort,char * DateTime) 
      

  7.   

    你的c++ dll到处函数要这样声明
    extern "C" __declspec(dllexport) char *  GetTime(BYTE ComPort,char * DateTime)
    否则你用普通的C++形式的话,编译器会在编译时更改你的函数名成 _函数名@参数总偏移量 这样的形式
    按照你现在的情况, vb声明为
    Public Declare Function GetTime Lib "you.dll" Alias "_GetTime@8" (ComPort as byte,byval DateTime as Long) As Long