vc ++ - 字符串和BSTR

时间:2012-03-01 14:40:00

标签: visual-c++

  STDMETHODIMP Cencrypt::encry(BSTR* s, BSTR* a)
   {
    int len,i;
    len=int(strlen((char *)(s)));
    for(i=0;i<len;i++)
   {
    a[i]=s[i]+3;
   }
    a[i]='\0';
    return S_OK;
   }

这是我用于简单字符串加密的后端代码...我的前端是VB,它有以下代码..


   Dim obj As New encrypt
   Dim s As String
   Dim a As String

   Private Sub Command1_Click()
   a = Text1.Text
   Call obj.encrypt(s, a)

   MsgBox (s)

    End Sub

但是当我在引用dll之后运行我的vb时,它没有执行...我能知道为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

BSTR不是常规的C字符串,所以你应该尽快停止思考它们(为了我们自己的理智)。

它们专为COM使用而设计,因此具有一系列用于检查和操作的专用API。对于初学者,请查看SysStringLen(以正确获取长度)和包装类_bstr_t

答案 1 :(得分:0)

我建议您显示IDL代码,您可以在其中为加密对象定义接口。

你遇到的另一个问题是假设BSTR是char *。他们不是。它们是双字节字符数组。