Làm thế nào tôi có thể vượt qua một char * từ C dll để VBLàm thế nào để chuyển đổi char * sang BSTR?
Đây là mẫu mã:
void Cfunc(char *buffer,int len)
{
BSTR buf_bstr = SysAllocString((BSTR)buffer);
VBptr.VBfunc(buf_bstr,len);
}
Chức năng này không hoạt động, Trong thực tế một số giá trị khác được gửi đến VB chứ không phải là thực tế giá trị.
Có ai vui lòng đề xuất giải pháp không?
Bạn có thể đưa ra ví dụ về chuỗi gốc so với giá trị sai đang được gửi không? –
Vấn đề (ban đầu) của bạn có vẻ là chiều rộng ký tự. BSTR luôn là ký tự rộng (COM là tất cả Unicode). Một diễn viên sẽ không tự động mở rộng các ký tự, nhưng giải thích các byte là wchar_t *. – Richard
Mã giả này có rò rỉ bộ nhớ. Bạn gọi SysAllocString(), nhưng không deallocate chuỗi sau khi bạn không còn cần nó. – sharptooth