用INDY9开发FTP客户端_02

用INDY9开发FTP客户端_02

-- 用VB调用BCB/VC编写的DLL

Roger Yang

    我这个FTP客户端的架构比较妖怪,所有的FTP操作都封装在BCB写的DLL中,这个DLL被VB调用,所以多线程在VB中实现。唉,多恶心的架构啊,不是自己给自己下套嘛。可没办法,朋友就要求这么做。最后,事实证明确实是把自己给套牢了,不过这是后话了。现在先说VB调用BCB/VC编写的DLL的几点问题。

1. vc中的void 在vb中应该声明为sub而不是function

  C函数这样
  void __stdcall ShowDlg(char *urlPath, char *savePath)
  {
  }
  那vb声明就这样
  Private Declare Sub ShowDlg Lib "DLLShared.dll" (ByVal urlPath As String, ByVal savePath As String)
  
  C函数这样
  __declspec(dllexport) int __stdcall ShowDlg(LPCSTR urlPath, LPCSTR savePath)
  {
  }
  那vb声明就这样
  Private Declare Function ShowDlg Lib "DLLShared.dll" (ByVal urlPath As String, ByVal savePath As String) As Long
  
 2. VC++中数据类型对应到VB中的数据类型VC++数据类型VB数据类型
                  
  short           Integer
  int             Long
  long            Long
  UNIT            Long
  ULONG           Long
  WORD,DWORD      Long
  WPARAM,LPARAM   Long
  WMSG,UMSG       Long
  HRESULT         Long
  BOOL            Boolean
  COLORREF        Long
  HWND,HDC,HBRUSH,HKEY,等等.   Long
  LPSTR,LPCSTR                 String
  LPWSTR,OLECHAR,BSTR          String
  LPTSTR                       String
  VARIANT_BOOL                 Boolean
  unsignedchar                 Byte
  BYTE                         Byte
  VARIANT                      Variant
  (任何以*或**结尾的数据类型)Long
  
  char *是一个指针型,你用string代替显然不行

 3. char *是一个指针型,用string代替是可以的,不过是byVal引用,不是byRef而已。具体的原因,好像有篇文章解释了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值