_com_util::ConvertStringToBSTR 使用时的注意事项
来源:互联网 发布:手机淘宝6.7.6版本 编辑:程序博客网 时间:2024/05/20 15:36
在进行COM编程的时候常常用到VARIANT类型的变量, 其中的字符串分量为bstrVal即双字节的BSTR, 如果需要将其转换为字符串STRING我以前使用强制类型转换:
(const char*)bsVal;
在看了潘爱民老师的<<COM编程原理>>偶尔发现如下函数(例子摘自MSDN)
//compile options needed: /Gr or /Gz
#include <comutil.h>
int main()
{
char sz[]="hello";
_bstr_t b;
b = _com_util::ConvertStringToBSTR(sz);
char * p = _com_util::ConvertBSTRToString(b);
return 1;
}
注意: 上述代码编译时候出现如下错误
error LNK2001: unresolved external symbol "char * __fastcall
_com_util::ConvertBSTRToString(unsigned short *)"
(?ConvertBSTRToString@_com_util@@YIPADPAG@Z)
error LNK2001: unresolved external symbol "unsigned short * __fastcall
_com_util::ConvertStringToBS
TR(char const *)" (?ConvertStringToBSTR@_com_util@@YIPAGPBD@Z)
解决: 在Link页加入comsupp.lib就可以了, 不过我的程序编译的时候没有上述错误, 但是在同事的机器上出现了.
我的用法 -- _com_util::ConvertStringToBSTR();
char* pTemp;
CString csTemp;
pTemp = _com_util::ConvertBSTRToString(bsVal);
csTemp = pTemp;
delete pTemp;
pTemp = NULL;
// 这是我们公司的一位高手的最安全的用法
// 对于ConvertStringToBSTR不需要
无意中进到你的Blog 发现一个问题,其实ConvertStringToBSTR 也是需要释放内存空间的
Example
// ConvertStringToBSTR.cpp
#include <comutil.h>
#include <stdio.h>
#pragma comment(lib, "comsupp.lib")
#pragma comment(lib, "kernel32.lib")
int main()
{
char* lpszText = "Test";
printf("char * text: %s\n", lpszText);
BSTR bstrText = _com_util::ConvertStringToBSTR(lpszText);
wprintf(L"BSTR text: %s\n", bstrText);
SysFreeString(bstrText);
}
代码来自MSDN
#2楼 回复 引用 查看
无意中进到你的Blog 发现一个问题,其实ConvertStringToBSTR 也是需要释放内存空间的
是的,否则同样有内存泄漏的问题!
- _com_util::ConvertStringToBSTR 使用时的注意事项
- _com_util::ConvertStringToBSTR 使用时的注意事项
- _com_util::ConvertStringToBSTR 使用时的注意事项
- _com_util::ConvertStringToBSTR 使用时的注意事项
- _com_util::ConvertStringToBSTR和_com_util::ConvertBSTRToString修正版
- 无法解析的外部符号 "wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *)"的解决办法
- 无法解析的外部符号 "wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *)"的解决办法
- 无法解析的外部符号 "wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *)"的解决办法
- LNK2019: 无法解析的外部符号 "wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *)"解决方案
- error LNK2019: 无法解析的外部符号 "wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *)"
- VS2010 中ConvertStringToBSTR()函数的使用
- _com_util::ConvertBSTRToString如何使用
- _com_util::ConvertBSTRToString 方法导致的内存泄漏
- 防止 _com_util::ConvertBSTRToString 引发的内存泄漏
- 防止 _com_util::ConvertBSTRToString 引发的内存泄漏
- jQuery使用时的注意事项
- 使用eval时的注意事项
- naked 使用时的注意事项。
- TOMCAT内存大小调整
- rpt 内出错:拒绝访问报表文件。其他程序可能正在使用它。
- heartbeat 高可用nfs服务器 不能停止nfsd 无法重启nfs
- 程序行为追踪(API TRACING)
- 异步通知程序编写方法
- _com_util::ConvertStringToBSTR 使用时的注意事项
- 《iPhone与iPad开发实战—iOS经典应用剖析》连载七
- shell 脚本查看 cpu 负载
- Java程序员从笨鸟到菜鸟之(七十六)细谈Hibernate(十八)悲观锁和乐观锁解决hibernate并发
- 【linux安全】移除不必要的服务
- 哑铃健身计划及图解说明
- Spring与iBATIS集成时,一对多表会报NullPointerException问题的解释
- FreeMarker中的null处理
- js调用谷歌地图V3