vb调用vc写的dll文件的时候,变量类型的对应关系

来源:互联网 发布:淘宝手机端店铺公告 编辑:程序博客网 时间:2024/06/05 17:08

引子:昨天在用vb调用vc写的dll文件的时候,变量的使用上出现了问题,通过反编译调试,发现vb中的long才是对应c中的int。而不是integer对应int。

 

以下是找到的资料:

 

在本篇中我们重点讲讲Api函数声明中参数列表的部分.

我们知道每种编程语言的数据类型都不尽相同,比如说C中的int和VB中的integer,看名字它们都是整型,但是它们占有的内存单元却是完全不同的.VB中的Integer是占用2个字节的.所以如果某个Api函数原型是C的int型你用Integer去声明它的话,会产生一些意外的错误.正确的做法是用Long去声明它.下面我们例出一些常用的类型转换:

C语言类型VB类型 Bytes            const char*Long4__int16Integer2__int32Long4__int64Double8__int8Byte1boolLong4floatSingle4doubleDouble8shortInteger2intLong4charByte1unsigned intLong4charByte1unsigned charByte1unsigned charByte1unsigned shortInteger2unsigned intLong4VARIANT_BOOLInteger2wchar_tInteger2FARPROCLong4DWORDLong4DWORDLong4DWORDLong4LONGLong4DWORDLong4WORDInteger2WORDInteger2WORDInteger2WCHAR/BYTEinteger/byte2/1DWORDLong4unsigned long intLong4intLong4unsigned charByte1unsigned charByte1OLECHAR*Long4unsigned charByte1unsigned charByte1DWORDLong4FARPROCLong4FARPROCLong4DWORDLong4charByte1charByte1WORDInteger2longLong4void*Long4CMC_sint32Long4CMC_uint32Long4CMC_uint32Long4CMC_uint32Long4shortInteger2long intLong4charByte1char*Long4CMC_uint32Long4unsigned short intInteger2unsigned long intLong4FARPROCLong4FARPROCLong4DWORDLong4DWORDLong4CYLong4intLong4DWORDLong4LONGLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4floatSingle4doubleDouble8FARPROCLong4FARPROCLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4DWORDLong4WORDInteger2DWORDLong4DWORDLong4DWORDLong4CHARByte1DESKTOPENUMPROCALong4FARPROCLong4FARPROCLong4unsigned intLong4PVOIDLong4LONGLong4FARPROCLong4doubleDouble8doubleDouble8DWORDLong4FARPROCLong4DWORDLong4unsigned longLong4unsigned __int64Double8EDITWORDBREAKPROCALong4FARPROCLong4FARPROCLong4FARPROCLong4FARPROCLong4FARPROCLong4unsigned longLong4INTLong4*Long4BYTEByte1intLong4WORDInteger2unsigned longLong4floatSingle4floatSingle4DWORDLong4FONTENUMPROCALong4FARPROCLong4FARPROCLong4ULONGLong4__int64Double8WORDInteger2void*Long4longLong4longLong4HANDLELong4FARPROCLong4FARPROCLong4unsigned intLong4HANDLELong4ULONGLong4HANDLELong4HANDLELong4HANDLELong4HANDLELong4PVOIDLong4HANDLELong4HANDLELong4ULONGLong4HANDLELong4HANDLELong4HANDLELong4HANDLELong4LPVOIDLong4void*Long4HANDLELong4HANDLELong4HANDLELong4HICONLong4void*Long4HANDLELong4HANDLELong4HANDLELong4PVOIDLong4HANDLELong4HANDLELong4HANDLELong4DWORDLong4void*Long4HANDLELong4void*Long4intLong4HANDLELong4ULONGLong4HANDLELong4HANDLELong4HANDLELong4HANDLELong4HANDLELong4struct _IMAGELIST NEAR*Long4DWORDLong4DWORDLong4HANDLELong4PVOIDLong4HANDLELong4LPVOIDLong4HANDLELong4HANDLELong4HANDLELong4HANDLELong4HANDLELong4void*Long4void*Long4HANDLELong4HANDLELong4HANDLELong4HANDLELong4HANDLELong4HANDLELong4void*Long4HGLOBALLong4FARPROCLong4HANDLELong4HANDLELong4DWORDLong4HANDLELong4HANDLELong4DWORDLong4LONGLong4HANDLELong4ULONGLong4HANDLELong4HANDLELong4WORDInteger2PVOIDLong4PVOIDLong4void*Long4HANDLELong4HANDLELong4HANDLELong4struct _TREEITEM FAR*Long4ULONGLong4HANDLELong4HANDLELong4HANDLELong4HANDLELong4HANDLELong4__int64Double8void*Long4void*Long4unsigned shortInteger2intLong4intLong4WORDInteger2ULONGLong4LONGLong4intLong4WORDInteger2WORDInteger2LONGLONGDouble8DWORDLong4LONGLong4LONGLong4DWORDLong4unsigned longLong4FARPROCLong4FARPROCLong4FARPROCLong4HANDLELong4longLong4longLong4long doubleDouble8longLong4__int64Double8hyperDouble8longLong4IAuthenticate*Long4IBindCtx*Long4union tagBINDPTR*Long4BOOL*Long4LPRECTLong4unsigned char*Long4LPCRECTLong4const CHAR*Long4const DLGTEMPLATE*Long4const DLGTEMPLATE*Long4const FOLDERSETTINGS*Long4CHAR*Long4const IID*Long4const ITEMIDLIST*Long4CLSID*Long4MENUITEMINFOA const*Long4MENUITEMINFOW const*Long4const MMCKINFO*Long4const MMIOINFO*Long4const OLECHAR*Long4DWORD*Long4const PROPSHEETHEADERA*Long4const PROPSHEETHEADERW*Long4const PROPSHEETPAGEA*Long4const PROPSHEETPAGEW*Long4REBARBANDINFOA const*Long4REBARBANDINFOW const*Long4const RECT*Long4const RECTL*Long4PRTL_CRITICAL_SECTIONLong4SCROLLINFO const*Long4const SHITEMID*Long4const CHAR*Long4const TBBUTTON*Long4const TCHAR*Long4const void*Long4const WAVEFORMATEX*Long4const WCHAR*Long4const WCHAR*Long4DWORD*Long4DWORD*Long4DWORD*Long4D3DCOLORMODEL*Long4DWORD*Long4DWORD*Long4DWORD*Long4float*Long4DESC_CHAR*Long4DLGITEMTEMPLATE*Long4DLGITEMTEMPLATE*Long4DLGTEMPLATE*Long4DLGTEMPLATE*Long4DWORD*Long4DWORD*Long4SBinaryArray*Long4IEnumCATEGORYINFO*Long4PFIBER_START_ROUTINELong4FMTID*Long4ACCELERATEABSDI*Long4DISMISSMODELESS*Long4long*Long4long*Long4GUID*Long4HANDLE*Long4IID*Long4int*Long4WORD*Long4unsigned long*Long4long*Long4VOID**Long4PVOIDLong4PVOIDLong4DWORD*Long4NMSELCHANGE*Long4OLECHAR*Long4WORD*Long4const char**Long4LPMAPIFORMINFO*Long4SIZE*Long4CHAR*Long4IStream*Long4LPSTRLong4PTHREAD_START_ROUTINELong4LPSTRLong4unsigned long*Long4VARIANT*Long4LPBYTELong4void*Long4WCHAR*Long4WORD*Long4WCHAR*Long4LONGLong4unsigned longLong4DWORDLong4longLong4unsigned longLong4charByte1unsigned longLong4LARGE_INTEGERDouble8intLong4DISPIDLong4doubleDouble8DWORDLong4FARPROCLong4FARPROCLong4void*Long4CHAR*Long4LONGLong4WCHAR*Long4longLong4FARPROCLong4VARIANT_BOOLInteger2DWORDLong4VARIANT_BOOLInteger2UINTLong4VARIANT_BOOLInteger2floatSingle4LONGLong4longLong4floatSingle4LONGLong4longLong4floatSingle4LONGLong4longLong4floatSingle4LONGLong4longLong4WCHARInteger2ACL*Long4WORDInteger2IAVIEditStream*Long4IAVIFile*Long4IAVIStream*Long4IAVIStreaming*Long4WORD*Long4BOOL*Long4BOOLEAN*Long4BYTE*Long4const CHAR*Long4COMBOBOXEXITEMA const*Long4COMBOBOXEXITEMW const*Long4CHAR*Long4CHAR*Long4const IUniformResourceLocatorA*Long4IConnectionPoint*Long4IConnectionPointContainer*Long4PRTL_CRITICAL_SECTIONLong4const CHAR*Long4char*Long4const URLINVOKECOMMANDINFOA*Long4const URLINVOKECOMMANDINFOW*Long4const WCHAR*Long4const WCHAR*Long4LONGLong4DLGITEMTEMPLATE*Long4DLGITEMTEMPLATE*Long4DWORD*Long4DWORDLONG*Long4IEnumConnectionPoints*Long4IEnumConnections*Long4FLOAT*Long4const unsigned char*Long4IGetFrame*Long4HANDLE*Long4HKEY*Long4int*Long4IUniformResourceLocatorA*Long4LARGE_INTEGER*Long4PDWORDLong4long*Long4LONGLONG*Long4LUID*Long4const MIDL_STUB_DESC*Long4void*Long4LONG*Long4WORDInteger2PROPENUMPROCALong4FARPROCLong4PROPENUMPROCEXALong4FARPROCLong4FARPROCLong4FARPROCLong4ULONGLong4SCODE*Long4WORD*Long4DWORD*Long4SHORT*Long4PVOIDLong4SIZE*Long4CHAR*Long4char*Long4unsigned char*Long4LPSTRLong4char*Long4void*Long4intLong4LPSTRLong4UCHAR*Long4unsigned int*Long4ULONG*Long4ULONGLONG*Long4USHORT*Long4void*Long4WCHAR*Long4WCHAR*Long4WORD*Long4WSH_NBP_NAME*Long4WSH_NBP_NAME*Long4WSH_NBP_NAME*Long4WCHAR*Long4CLSID*Long4FMTID*Long4GUID*Long4IID*Long4ACCESS_MASKLong4DWORDLong4shortInteger2void*Long4void*Long4I_RPC_HANDLELong4unsigned char*Long4I_RPC_HANDLE*Long4void*Long4unsigned longLong4void*Long4void*Long4longLong4unsigned longLong4HANDLELong4LPVOIDLong4charByte1longLong4DWORDLong4doubleDouble8long intLong4WORDInteger2DWORDLong4FARPROCLong4DWORDLong4floatSingle4shortInteger2shortInteger2shortInteger2intLong4signed charByte1intLong4longLong4shortInteger2unsigned intLong4signed longLong4longLong4OLECHAR**Long4u_intLong4HANDLE*Long4__int64Double8unsigned charByte1unsigned charByte1unsigned charByte1doubleDouble8doubleDouble8void*Long4SQLHANDLELong4SQLHANDLELong4SQLHANDLELong4SQLHANDLELong4HWNDLong4longLong4unsigned charByte1void*Long4floatSingle4SQLSMALLINTInteger2charByte1shortInteger2SQLCHARByte1unsigned charByte1unsigned charByte1unsigned __int64Double8unsigned longLong4unsigned shortInteger2unsigned charByte1wchar_tInteger2shortInteger2longLong4longLong4DWORDLong4short intInteger2short intInteger2TCHARByte/Integer1/2TCHARByte/Integer1/2longLong4FARPROCLong4FARPROCLong4FARPROCLong4WORDInteger2unsigned charByte1unsigned intLong4unsigned longLong4unsigned shortInteger2unsigned charByte1unsigned long intLong4unsigned long intLong4unsigned intLong4unsigned longLong4unsigned longLong4unsigned __int64Double8unsigned charByte1unsigned intLong4unsigned longLong4unsigned shortInteger2BYTE_BLOB*Long4DWORD_BLOB*Long4FLAGGED_BYTE_BLOB*Long4FLAGGED_WORD_BLOB*Long4WORD_BLOB*Long4unsigned shortInteger2unsigned shortInteger2LONGLONGDouble8unsigned short intInteger2unsigned short intInteger2char*Long4VARIANTVariant shortInteger2VARIANTVariant unsigned shortInteger2void*Long4wchar_tInteger2unsigned shortInteger2wchar_tInteger2wchar_tInteger2LPVOIDLong4FARPROCLong4FARPROCLong4wchar_tInteger2userSTGMEDIUM*Long4FLAGGED_WORD_BLOB*Long4userCLIPFORMAT*Long4userFLAG_STGMEDIUM*Long4RemotableHandle*Long4userHBITMAP*Long4RemotableHandle*Long4RemotableHandle*Long4userHENHMETAFILE*Long4RemotableHandle*Long4userHGLOBAL*Long4RemotableHandle*Long4RemotableHandle*Long4userHMETAFILE*Long4userHMETAFILEPICT*Long4userHPALETTE*Long4RemotableHandle*Long4RemSNB*Long4userSTGMEDIUM*Long4FARPROCLong4*Long4unsigned shortInteger2UINTLong4DWORDLong4 

对于指针型的类型转入到Vb中应是ByRef的.其它的用ByVal,对于某些函数回调,需要用Addressof取函数地址,要注意的是要取地址的函数必需在模块文件中.否则会出错.

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/littlerain007/archive/2005/03/22/326569.aspx

原创粉丝点击