我的函数定义LoadBMP( char* fileName, GLuint texture ).可在调用auxDIBImageLoad(fileName)问题出现上面错误.怎么将char *' 转化为 'LPCWSTR',网上有说在工程属性设置里面去掉unicode支持,但我必须使用unicode,该怎么办啊.

解决方案 »

  1.   

            TCHAR buf[1024];
            int len = MultiByteToWideChar(CP_ACP,0,szTechniqueName,-1,NULL,NULL);
          TCHAR *tmp = new TCHAR[len];
          MultiByteToWideChar(CP_ACP,0,szTechniqueName,-1,tmp,len);
      

  2.   

    char *' 转化为 'LPCWSTR'
    就用MultiByteToWideChar
    代码可以这样做:
    int len = MultiByteToWideChar(CP_ACP,0,fileName,-1,NULL,NULL);
              TCHAR *tmp = new TCHAR[len];
              MultiByteToWideChar(CP_ACP,0,fileName,-1,tmp,len);
    auxDIBImageLoad(tmp )
      

  3.   

    #include   <atlbase.h> USES_CONVERSION; 
    LPCWSTR   pw   =   T2W( "Hello,world! ");   //   tchar   ->   wchar 
    LPCTSTR   pt   =   W2T(L "Hello,world! ");   //   wchar   ->   tchar 
      

  4.   

       纹理的载入是不是有什么要求,比如在着色描述表,设备相关的....我在一个单文档应用程序中,新建了一个C++类,想在这个类里载入纹理,我设断点跟了一下,发现纹理根本没载入,仍为一个随机数.而我用同样的调用,放在另一个类的着色描述表初始化后面,就显示载入成功.很无解,这是为什么啊(OpenGL新手)?