typedef void* __stdcall (OPENEQUIPMENT)(int nMyAddress, HWND hWnd);
typedef void __stdcall (RECVVERSION)(LPTSTR lpEdition);
typedef void __stdcall (SETLOG)(void* pDevice, BOOL bAddLog);OPENEQUIPMENT* lpOpenEQUIPMENT;
RECVVERSION* lpRecvVERSION;
SETLOG* lpSetLog;unsigned char cId[8],i;GetLocalTime(&LocalTime);lpOpenDevice = (OPENEQUIPMENT*)::GetProcAddress(hLibrary, "OnDevice");
if(lpOpenDevice == NULL)
{
 FreeLibrary(hLibrary);
 return FALSE;
}

解决方案 »

  1.   

    typedef void* __stdcall (OPENEQUIPMENT)(int nMyAddress, HWND hWnd); 
    typedef void __stdcall (RECVVERSION)(LPTSTR lpEdition); 
    typedef void __stdcall (SETLOG)(void* pDevice, BOOL bAddLog); //Dll里边声明的函数么?OPENEQUIPMENT* lpOpenEQUIPMENT; 
    RECVVERSION* lpRecvVERSION; 
    SETLOG* lpSetLog; //是结构体声明吧?可以转成pascal的record记录类型unsigned char cId[8],i; GetLocalTime(&LocalTime); lpOpenDevice = (OPENEQUIPMENT*)::GetProcAddress(hLibrary, "OnDevice"); 
    if(lpOpenDevice == NULL) 

    FreeLibrary(hLibrary); 
    return FALSE; 
    }//动态调用dll函数
      

  2.   

    这东西都没啥好翻的,也就是动态加载dll函数和一些api调用而已
    typedef void* __stdcall (OPENEQUIPMENT)(int nMyAddress, HWND hWnd); 
    typedef void __stdcall (RECVVERSION)(LPTSTR lpEdition); 
    typedef void __stdcall (SETLOG)(void* pDevice, BOOL bAddLog); type
    TOpenEquipment = function(nMyAddress: Integer; Wnd: HWND): Pointer stdcall;
    TRecvVersion = procedure(lpEdition: LPTSTR) stdcall;
    TSetLog = procedure(pDevice: Pointer; bAddLog: BOOL) stdcall;
    lpOpenDevice = (OPENEQUIPMENT*)::GetProcAddress(hLibrary, "OnDevice"); 
    if(lpOpenDevice == NULL) 

        FreeLibrary(hLibrary); 
        return FALSE; 
    }  lpOpenDevice := GetProcAddress(hLibrary, "OnDevice"); 
      if(lpOpenDevice=nil)then
      begin
        FreeLibrary(hLibrary);
        Result := False;
        Exit;
      end;
      

  3.   

    typedef void* __stdcall (OPENEQUIPMENT)(int nMyAddress, HWND hWnd); 
    typedef void __stdcall (RECVVERSION)(LPTSTR lpEdition); 
    typedef void __stdcall (SETLOG)(void* pDevice, BOOL bAddLog); 
    以上是函数指针的声明
    第一个是返回值为无类型指针(void*)的有一个int类型和HWND类型参数列表的符合stdcall调用规则的函数指针,这个指针命名为OPENEQUIPMENT;
    第二个是无返回值的有一个LPTSTR类型参数列表的符合stdcall调用规则的函数指针,这个指针命名为RECVVERSION;
    第三个是无返回值的有一个无类型指针(void*)类型和BOOL类型参数列表的符合stdcall调用规则的函数指针,这个指针命名为SETLOG;OPENEQUIPMENT* lpOpenEQUIPMENT; 
    RECVVERSION* lpRecvVERSION; 
    SETLOG* lpSetLog; 
    这些是声明指针的指针;unsigned char cId[8],i; 
    声明一个无符号字符型数组和变量
    GetLocalTime(&LocalTime); 
    获取本地时间
    lpOpenDevice = (OPENEQUIPMENT*)::GetProcAddress(hLibrary, "OnDevice"); 
    为指向指针的类型变量赋值,将GetProcAddress返回的指针,转换为 OPENEQUIPMENT*类型;
    if(lpOpenDevice == NULL)  //如果没有取到指针 

    FreeLibrary(hLibrary);   //释放dll句柄
    return FALSE; 
    }