一天之内被3个破玩意轮流xx,真是郁闷……1  工程属性中“运行时库”设置导致颜面尽失……      一个小小的测试exe,写出来后在无数的机台上测试都没有问题,然后兴致勃勃的带着它到一个出问题的机台上去测试,在场的人都看着我。结果cmd,回车,cd f:回车,xxx.exe  ,然后“The system cannot execute the specified program” !!!!!!!那个丢人啊……然后先推辞说少拷贝了一个文件。回来之后赶紧看工程的设置,果然运行时库选择了“多线程/MD”,立刻改成“多线程/MT”,然后随便捏造了一个所谓的文件……得要点面子……    关于运行时库的设置和它们的区别:http://blog.csdn.net/danxuezx/archive/2010/01/07/5150896.aspx2   WCHAR与Unicode编码概念混淆
    
     问题描述如下:http://topic.csdn.net/u/20100107/16/6565ea28-f1aa-4fbd-b023-9ffde1af4238.html
     下面是我的理解,不对的地方大家给纠正一下。     用WCHAR wTemp[20]来保存字符串跟字符的编码没有任何关系,千万别混淆。wTemp可以保存Unicode编码的字符串,也可以保存多字节编码的字符串.wTemp只是一段内存,它只是用来保存东西。
     上面的理解有问题吗?3    粮草未备,军队却现行
     一个测试程序中需要用到系统中的一个服务,我上来就一顿运行东西,结果到别人手里说不能运行。然后就开始找问题,一想不对,既然是依靠系统的服务,那如果那个服务如果被disable了那一切不是都完蛋了吗?去一查看果然是。
此类错误不可犯啊……以此贴为戒,如果我再提问这三类问题,大家就拍我板砖。

解决方案 »

  1.   

    unicode是一种理念,wchar是unicode的一个体现。
      

  2.   

    这个我知道,上面的说法不准确,应该是说用“WCHAR wTemp[20]”保存的字符串与字符串本身的编码没有关系。
      

  3.   

    嗯,使用强制转换,unsigned char *可以搞定所有类型。
      

  4.   

    WCHAR数组确实跟字符编码没有任何关系,只不过是一段缓冲区而已。
    即便写出如
    WCHAR wTemp[20] = “test string”;
    这样的代码也是没有错的,只不过不是宽字符编码罢了
      

  5.   

    上面这样肯定编译不过。
    需要借助memcpy或者字符串拷贝函数。
      

  6.   


    WCHAR wTemp[20] = L"test string";
    之類還是可以的 
    定義變量的時候順便賦一個值 跟隨後再寫wTemp = L"xxx";的情況有所不同 
    樓主可以多注意一些細節
      

  7.   

    一段内存空间永远跟这段内存上面的数据格式没有关系,程序员怎么定它就是什么数据。开Byte类型的也可以存放Unicode。
      

  8.   

    加油啊,Unicode和非Unicode编码真的要区分好,(*^__^*) 嘻嘻……