BSTR虽然解决了不同语言之间的兼容问题,但也带来了不少内部问题
一、格式化字符串 产生的问题
今天需要传递一个指针到新的dll中去,然而去没有整形参数的接口,于是打算转换成字符再传递过去
在转换为bstr传递到新组件之后,使用wscanf格式化回来时,不管如何使用参数,得到的结果都是16,怀疑为bstr的长度前缀引起wscanf函数格式出现的问题。
换为_wtol,得到的结果正常
Fun(BSTR funcName,BSTR val1)
{
CString s2(val1);
ULONG p = _wtol(s2); // 使用 wscanf(s2,L"%p",&p); 结果始终为16的异常值
......
}