vc ++ - строки и BSTR - PullRequest
       8

vc ++ - строки и BSTR

0 голосов
/ 01 марта 2012
  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

Но когда я запускаю свой vb после обращения к dll, он не выполняется ... Могу ли я знать, почему это происходит?

Ответы [ 2 ]

1 голос
/ 01 марта 2012

BSTR не являются обычными C-строками, поэтому вам следует перестать думать о них как можно скорее (для нашего же здравого смысла).

Они специально разработаны для использования COM, и поэтому имеют ряд специальных API-интерфейсов для проверки и манипулирования.Для начала проверьте SysStringLen (чтобы получить правильную длину) и класс оболочки _bstr_t.

0 голосов
/ 01 марта 2012

Я бы порекомендовал вам показать код IDL, в котором вы определяете интерфейсы для вашего объекта шифрования.

Другая проблема, с которой вы столкнулись, заключается в предположении, что BSTR являются char *. Они не. Это двухбайтовые массивы символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...