![]() |
1
3
BSTR具有32位长度 在…之前 字符串。因此,BSTR可以包含嵌入的空值。 _T(“AAPL”)创建一个wchar_T*,其结尾为null,但没有长度前缀。 但在幕后,两者都是wchar_t*,因此调用会编译,不需要转换。你有点幸运,因为可能会发生比在另一边没有绳子更糟糕的事情。封送处理程序可能会查看返回32位的_T(“AAPL”)计数,碰巧得到一个非常长的长度值,这将是糟糕的。:-) 如果将参数定义为_bstr_t,您将获得自动转换,因为这将调用_bstr_t(wchar_t*)构造函数。 |
![]() |
2
1
因为 BSTR 是一个指向宽字符串的指针,但这并不意味着可以只分配简单的常量wchar*字符串。要使用BSTR,您需要使用一些系统功能 SysAllocString() 用于创建BSTR_bstr_t类封装了所有这些东西 |
![]() |
Saravanan Sachi TheSharpieOne · 在VB中调用Excel函数的任何方法。NET作为Microsoft。办公室互操作。Excel在服务器中抛出未注册的类(REGB\u E\u CLASSNOTREG)? 7 年前 |
![]() |
IS4 · 无参考的封送[in]参考 7 年前 |
![]() |
Water Cooler v2 · 如何在Java中进行COM互操作? 7 年前 |
![]() |
Eugen · _bstr_r与_T(“”) 10 年前 |
![]() |
Builder · 应用程序退出后留在内存中 10 年前 |