2012-03-01 13 views
0
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であり、それは次のコードを持っているVC++ - 文字列とBSTRは


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

暗号化オブジェクトのインターフェイスを定義する場所にIDLコードを表示することをお勧めします。

もう1つの問題は、BSTRがchar *であると仮定していることです。ではない。それらは2バイトのchar配列です。

1

BSTRは通常のC文字列ではありません。したがって、BSTRはそのように考えてしまうことをやめてください(自分の正気のために)。

これらは、COM用に特別に設計されており、検査や操作のために特別なAPIを多数備えています。まず、SysStringLen(長さを正しく取得する)とラッパークラス_bstr_tをチェックしてください。

関連する問題