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时,它没有执行...我能知道为什么会这样吗?
答案 0 :(得分:1)
BSTR不是常规的C字符串,所以你应该尽快停止思考它们(为了我们自己的理智)。
它们专为COM使用而设计,因此具有一系列用于检查和操作的专用API。对于初学者,请查看SysStringLen(以正确获取长度)和包装类_bstr_t
。
答案 1 :(得分:0)
我建议您显示IDL代码,您可以在其中为加密对象定义接口。
你遇到的另一个问题是假设BSTR是char *。他们不是。它们是双字节字符数组。