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

引子:昨天在用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
__int8Byte1
boolLong4
floatSingle4
doubleDouble8
shortInteger2
intLong4
charByte1
unsigned intLong4
charByte1
unsigned charByte1
unsigned charByte1
unsigned shortInteger2
unsigned intLong4
VARIANT_BOOLInteger2
wchar_tInteger2
FARPROCLong4
DWORDLong4
DWORDLong4
DWORDLong4
LONGLong4
DWORDLong4
WORDInteger2
WORDInteger2
WORDInteger2
WCHAR/BYTEinteger/byte2/1
DWORDLong4
unsigned long intLong4
intLong4
unsigned charByte1
unsigned charByte1
OLECHAR*Long4
unsigned charByte1
unsigned charByte1
DWORDLong4
FARPROCLong4
FARPROCLong4
DWORDLong4
charByte1
charByte1
WORDInteger2
longLong4
void*Long4
CMC_sint32Long4
CMC_uint32Long4
CMC_uint32Long4
CMC_uint32Long4
shortInteger2
long intLong4
charByte1
char*Long4
CMC_uint32Long4
unsigned short intInteger2
unsigned long intLong4
FARPROCLong4
FARPROCLong4
DWORDLong4
DWORDLong4
CYLong4
intLong4
DWORDLong4
LONGLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
floatSingle4
doubleDouble8
FARPROCLong4
FARPROCLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
DWORDLong4
WORDInteger2
DWORDLong4
DWORDLong4
DWORDLong4
CHARByte1
DESKTOPENUMPROCALong4
FARPROCLong4
FARPROCLong4
unsigned intLong4
PVOIDLong4
LONGLong4
FARPROCLong4
doubleDouble8
doubleDouble8
DWORDLong4
FARPROCLong4
DWORDLong4
unsigned longLong4
unsigned __int64Double8
EDITWORDBREAKPROCALong4
FARPROCLong4
FARPROCLong4
FARPROCLong4
FARPROCLong4
FARPROCLong4
unsigned longLong4
INTLong4
*Long4
BYTEByte1
intLong4
WORDInteger2
unsigned longLong4
floatSingle4
floatSingle4
DWORDLong4
FONTENUMPROCALong4
FARPROCLong4
FARPROCLong4
ULONGLong4
__int64Double8
WORDInteger2
void*Long4
longLong4
longLong4
HANDLELong4
FARPROCLong4
FARPROCLong4
unsigned intLong4
HANDLELong4
ULONGLong4
HANDLELong4
HANDLELong4
HANDLELong4
HANDLELong4
PVOIDLong4
HANDLELong4
HANDLELong4
ULONGLong4
HANDLELong4
HANDLELong4
HANDLELong4
HANDLELong4
LPVOIDLong4
void*Long4
HANDLELong4
HANDLELong4
HANDLELong4
HICONLong4
void*Long4
HANDLELong4
HANDLELong4
HANDLELong4
PVOIDLong4
HANDLELong4
HANDLELong4
HANDLELong4
DWORDLong4
void*Long4
HANDLELong4
void*Long4
intLong4
HANDLELong4
ULONGLong4
HANDLELong4
HANDLELong4
HANDLELong4
HANDLELong4
HANDLELong4
struct _IMAGELIST NEAR*Long4
DWORDLong4
DWORDLong4
HANDLELong4
PVOIDLong4
HANDLELong4
LPVOIDLong4
HANDLELong4
HANDLELong4
HANDLELong4
HANDLELong4
HANDLELong4
void*Long4
void*Long4
HANDLELong4
HANDLELong4
HANDLELong4
HANDLELong4
HANDLELong4
HANDLELong4
void*Long4
HGLOBALLong4
FARPROCLong4
HANDLELong4
HANDLELong4
DWORDLong4
HANDLELong4
HANDLELong4
DWORDLong4
LONGLong4
HANDLELong4
ULONGLong4
HANDLELong4
HANDLELong4
WORDInteger2
PVOIDLong4
PVOIDLong4
void*Long4
HANDLELong4
HANDLELong4
HANDLELong4
struct _TREEITEM FAR*Long4
ULONGLong4
HANDLELong4
HANDLELong4
HANDLELong4
HANDLELong4
HANDLELong4
__int64Double8
void*Long4
void*Long4
unsigned shortInteger2
intLong4
intLong4
WORDInteger2
ULONGLong4
LONGLong4
intLong4
WORDInteger2
WORDInteger2
LONGLONGDouble8
DWORDLong4
LONGLong4
LONGLong4
DWORDLong4
unsigned longLong4
FARPROCLong4
FARPROCLong4
FARPROCLong4
HANDLELong4
longLong4
longLong4
long doubleDouble8
longLong4
__int64Double8
hyperDouble8
longLong4
IAuthenticate*Long4
IBindCtx*Long4
union tagBINDPTR*Long4
BOOL*Long4
LPRECTLong4
unsigned char*Long4
LPCRECTLong4
const CHAR*Long4
const DLGTEMPLATE*Long4
const DLGTEMPLATE*Long4
const FOLDERSETTINGS*Long4
CHAR*Long4
const IID*Long4
const ITEMIDLIST*Long4
CLSID*Long4
MENUITEMINFOA const*Long4
MENUITEMINFOW const*Long4
const MMCKINFO*Long4
const MMIOINFO*Long4
const OLECHAR*Long4
DWORD*Long4
const PROPSHEETHEADERA*Long4
const PROPSHEETHEADERW*Long4
const PROPSHEETPAGEA*Long4
const PROPSHEETPAGEW*Long4
REBARBANDINFOA const*Long4
REBARBANDINFOW const*Long4
const RECT*Long4
const RECTL*Long4
PRTL_CRITICAL_SECTIONLong4
SCROLLINFO const*Long4
const SHITEMID*Long4
const CHAR*Long4
const TBBUTTON*Long4
const TCHAR*Long4
const void*Long4
const WAVEFORMATEX*Long4
const WCHAR*Long4
const WCHAR*Long4
DWORD*Long4
DWORD*Long4
DWORD*Long4
D3DCOLORMODEL*Long4
DWORD*Long4
DWORD*Long4
DWORD*Long4
float*Long4
DESC_CHAR*Long4
DLGITEMTEMPLATE*Long4
DLGITEMTEMPLATE*Long4
DLGTEMPLATE*Long4
DLGTEMPLATE*Long4
DWORD*Long4
DWORD*Long4
SBinaryArray*Long4
IEnumCATEGORYINFO*Long4
PFIBER_START_ROUTINELong4
FMTID*Long4
ACCELERATEABSDI*Long4
DISMISSMODELESS*Long4
long*Long4
long*Long4
GUID*Long4
HANDLE*Long4
IID*Long4
int*Long4
WORD*Long4
unsigned long*Long4
long*Long4
VOID**Long4
PVOIDLong4
PVOIDLong4
DWORD*Long4
NMSELCHANGE*Long4
OLECHAR*Long4
WORD*Long4
const char**Long4
LPMAPIFORMINFO*Long4
SIZE*Long4
CHAR*Long4
IStream*Long4
LPSTRLong4
PTHREAD_START_ROUTINELong4
LPSTRLong4
unsigned long*Long4
VARIANT*Long4
LPBYTELong4
void*Long4
WCHAR*Long4
WORD*Long4
WCHAR*Long4
LONGLong4
unsigned longLong4
DWORDLong4
longLong4
unsigned longLong4
charByte1
unsigned longLong4
LARGE_INTEGERDouble8
intLong4
DISPIDLong4
doubleDouble8
DWORDLong4
FARPROCLong4
FARPROCLong4
void*Long4
CHAR*Long4
LONGLong4
WCHAR*Long4
longLong4
FARPROCLong4
VARIANT_BOOLInteger2
DWORDLong4
VARIANT_BOOLInteger2
UINTLong4
VARIANT_BOOLInteger2
floatSingle4
LONGLong4
longLong4
floatSingle4
LONGLong4
longLong4
floatSingle4
LONGLong4
longLong4
floatSingle4
LONGLong4
longLong4
WCHARInteger2
ACL*Long4
WORDInteger2
IAVIEditStream*Long4
IAVIFile*Long4
IAVIStream*Long4
IAVIStreaming*Long4
WORD*Long4
BOOL*Long4
BOOLEAN*Long4
BYTE*Long4
const CHAR*Long4
COMBOBOXEXITEMA const*Long4
COMBOBOXEXITEMW const*Long4
CHAR*Long4
CHAR*Long4
const IUniformResourceLocatorA*Long4
IConnectionPoint*Long4
IConnectionPointContainer*Long4
PRTL_CRITICAL_SECTIONLong4
const CHAR*Long4
char*Long4
const URLINVOKECOMMANDINFOA*Long4
const URLINVOKECOMMANDINFOW*Long4
const WCHAR*Long4
const WCHAR*Long4
LONGLong4
DLGITEMTEMPLATE*Long4
DLGITEMTEMPLATE*Long4
DWORD*Long4
DWORDLONG*Long4
IEnumConnectionPoints*Long4
IEnumConnections*Long4
FLOAT*Long4
const unsigned char*Long4
IGetFrame*Long4
HANDLE*Long4
HKEY*Long4
int*Long4
IUniformResourceLocatorA*Long4
LARGE_INTEGER*Long4
PDWORDLong4
long*Long4
LONGLONG*Long4
LUID*Long4
const MIDL_STUB_DESC*Long4
void*Long4
LONG*Long4
WORDInteger2
PROPENUMPROCALong4
FARPROCLong4
PROPENUMPROCEXALong4
FARPROCLong4
FARPROCLong4
FARPROCLong4
ULONGLong4
SCODE*Long4
WORD*Long4
DWORD*Long4
SHORT*Long4
PVOIDLong4
SIZE*Long4
CHAR*Long4
char*Long4
unsigned char*Long4
LPSTRLong4
char*Long4
void*Long4
intLong4
LPSTRLong4
UCHAR*Long4
unsigned int*Long4
ULONG*Long4
ULONGLONG*Long4
USHORT*Long4
void*Long4
WCHAR*Long4
WCHAR*Long4
WORD*Long4
WSH_NBP_NAME*Long4
WSH_NBP_NAME*Long4
WSH_NBP_NAME*Long4
WCHAR*Long4
CLSID*Long4
FMTID*Long4
GUID*Long4
IID*Long4
ACCESS_MASKLong4
DWORDLong4
shortInteger2
void*Long4
void*Long4
I_RPC_HANDLELong4
unsigned char*Long4
I_RPC_HANDLE*Long4
void*Long4
unsigned longLong4
void*Long4
void*Long4
longLong4
unsigned longLong4
HANDLELong4
LPVOIDLong4
charByte1
longLong4
DWORDLong4
doubleDouble8
long intLong4
WORDInteger2
DWORDLong4
FARPROCLong4
DWORDLong4
floatSingle4
shortInteger2
shortInteger2
shortInteger2
intLong4
signed charByte1
intLong4
longLong4
shortInteger2
unsigned intLong4
signed longLong4
longLong4
OLECHAR**Long4
u_intLong4
HANDLE*Long4
__int64Double8
unsigned charByte1
unsigned charByte1
unsigned charByte1
doubleDouble8
doubleDouble8
void*Long4
SQLHANDLELong4
SQLHANDLELong4
SQLHANDLELong4
SQLHANDLELong4
HWNDLong4
longLong4
unsigned charByte1
void*Long4
floatSingle4
SQLSMALLINTInteger2
charByte1
shortInteger2
SQLCHARByte1
unsigned charByte1
unsigned charByte1
unsigned __int64Double8
unsigned longLong4
unsigned shortInteger2
unsigned charByte1
wchar_tInteger2
shortInteger2
longLong4
longLong4
DWORDLong4
short intInteger2
short intInteger2
TCHARByte/Integer1/2
TCHARByte/Integer1/2
longLong4
FARPROCLong4
FARPROCLong4
FARPROCLong4
WORDInteger2
unsigned charByte1
unsigned intLong4
unsigned longLong4
unsigned shortInteger2
unsigned charByte1
unsigned long intLong4
unsigned long intLong4
unsigned intLong4
unsigned longLong4
unsigned longLong4
unsigned __int64Double8
unsigned charByte1
unsigned intLong4
unsigned longLong4
unsigned shortInteger2
BYTE_BLOB*Long4
DWORD_BLOB*Long4
FLAGGED_BYTE_BLOB*Long4
FLAGGED_WORD_BLOB*Long4
WORD_BLOB*Long4
unsigned shortInteger2
unsigned shortInteger2
LONGLONGDouble8
unsigned short intInteger2
unsigned short intInteger2
char*Long4
VARIANTVariant 
shortInteger2
VARIANTVariant 
unsigned shortInteger2
void*Long4
wchar_tInteger2
unsigned shortInteger2
wchar_tInteger2
wchar_tInteger2
LPVOIDLong4
FARPROCLong4
FARPROCLong4
wchar_tInteger2
userSTGMEDIUM*Long4
FLAGGED_WORD_BLOB*Long4
userCLIPFORMAT*Long4
userFLAG_STGMEDIUM*Long4
RemotableHandle*Long4
userHBITMAP*Long4
RemotableHandle*Long4
RemotableHandle*Long4
userHENHMETAFILE*Long4
RemotableHandle*Long4
userHGLOBAL*Long4
RemotableHandle*Long4
RemotableHandle*Long4
userHMETAFILE*Long4
userHMETAFILEPICT*Long4
userHPALETTE*Long4
RemotableHandle*Long4
RemSNB*Long4
userSTGMEDIUM*Long4
FARPROCLong4
*Long4
unsigned shortInteger2
UINTLong4
DWORDLong4

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值