我一开始觉得使用_com_util::ConvertBSTRToString很不正规,这是_bstr_t在内部进行调用的,较标准的方法是:char *x=(char*)_bstr_t(xx);,而不是使用前者。
茁见!

解决方案 »

  1.   

    用 #include <atlconv.h> 里面的 W2T 等宏。
      

  2.   

    W2CT还需要包含什么头文件?
    rror C2065: '_lpw' : undeclared identifier
    E:\E-Book\DownLink\DownClick.h(119) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class ATL::CComBSTR' (or there is no acceptable conversion)
    E:\E-Book\DownLink\DownClick.h(119) : error C2065: '_convert' : undeclared identifier
      

  3.   

    vcmfc(菜虫):
    现在也不知道是什么回事?
    当没使用_bstr_t又是那个main函数unresolved external symbol _main
    没有使用这个类型时候一切正常?
    是不是什么BUG
      

  4.   

    哦,是当使用_bstr_t又是那个main函数unresolved external symbol _main
      

  5.   

    不行大家试试看,我什么东西都没动,就新建一个Atl Com,添加一个FULL Control,在控件的类中定义一个_bstr_t就有错。
      

  6.   

    Debug版本没事,Release的任何一个版本都不行
      

  7.   

    用ATL不妨用CComBSTR
    用A2W W2A之类的用
    #include <atlconv.h>
    在function 开始处加 USES_CONVERSION;如
    void f()
    {
    USES_CONVERSION;
    ....
    ....}
      

  8.   

    我也怀疑是BUG,看来A2W等系列才是最标准的。
      

  9.   

    看来VC的COM支持部分使用要小心呀!
    使用A2W等没有问题!谢谢!,以学到经验了。
      

  10.   

    谢谢这么多位热心的朋友!!!
    问题已经解决edyang和lms方法转换,可能是VC6的BUG。
      

  11.   

    thank you!!!
    学到很多!
      

  12.   

    解决了:
    这是VC6的一个BUG,由于VC6在ATL使用_ATL_MIN_CRT_宏,该宏会使CRT启动代码无效,去掉该宏就可以了,如下做法:Project->Setting->C/C++ 的Category中选择Preprocessor的Preprocessor definitions:中去掉_ATL_MIN_CRT_。