我用vc2008写的一个画图板程序,打开英文目录下的文件没问题,打开中文目录下的文件确一直报错,有谁知道是什么原因哈?

解决方案 »

  1.   

    应该是UNICODE导致的,你用什么那个函数打开文件?
      

  2.   

    先用一个CString变量存储了文件地址,然后用opencv下的一个函数IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );打开这个文件。前面一直是CString向const char*转换报错,将工程属性unicode改为多字符集后就出现了打的开英文目录文件打不开中文目录文件的问题。
      

  3.   

    将工程属性改回原来的.
    这样改就行了
    CString sPath;
    char filename[MAX_PATH]={0};
    strcpy(filename,sPath);
    IplImage* pimg=cvLoadImage(filename);
      

  4.   

    那你就不要改工程属性咯
        把CString类型变量转换成const char*不就得了    VC2008就是类型转换的比较麻烦一点
      

  5.   

    要把CString转成char *,用操作符(LPCSTR)CString就可以了
      

  6.   

    UNICODE的原因!
    这样好了,你直接将CString 转化成char *就行了!
    除了5楼说的方法,还有CString::GetBuffer(),比如:CString str;str.GetBuffer(str.GetLength());
      

  7.   

    采用wsprintfA(str, "%S ",(LPCTSTR)filename);的方法能够转换成功,找到文件地址了,可是显示图像的时候却是黑屏
      

  8.   

    看样子应该是vc2008的问题了,换2005后啥问题都没,同样的解决unicode的方法2005下直接通过,2008下就是各种错误