读书人

quot;cann#039;t convert #039;const char*#039; to #039;c

发布时间: 2012-10-28 09:54:44 作者: rapoo

"cann't convert 'const char*' to 'const TCHAR'"
小弟刚学TCHAR,使用这个修改了一下函数,但是编译出错,显示的是"cann't convert 'const char*' to 'const TCHAR'",这是什么原因?
AUX_RGBImageRec *Texture::LoadBMP(const TCHAR* Filename)// Loads A Bitmap Image
{
FILE *File=NULL;// File Handle

if (!Filename)// Make Sure A Filename Was Given
{
return NULL;// If Not Return NULL
}
char* filename=(char*)Filename;
File=fopen(filename,"r");// Check To See If The File Exists

if (File)// Does The File Exist?
{
fclose(File);// Close The Handle
return auxDIBImageLoad(Filename);// Load The Bitmap And Return A Pointer
}

return NULL;// If Load Failed Return NULL
}



int Texture::LoadTextures()// Load Bitmaps And Convert To Textures
{
int Status=FALSE;// Status Indicator

AUX_RGBImageRec *TextureImage[1];// Create Storage Space For The Texture

memset(TextureImage,0,sizeof(void *)*1); // Set The Pointer To NULL

const TCHAR* map[4]={_T("Sky.bmp"),_T("Floor.bmp"),_T("Puf.bmp"),_T("Boom.bmp")};//出错位置
// Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit
if (TextureImage[0]=LoadBMP(map[0]))
{
Status=TRUE;// Set The Status To TRUE

glGenTextures(1, &texture[0]);// Create Three Textures

// Create MipMapped Texture
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
}
if (TextureImage[0]=LoadBMP(map[1]))
{
Status=TRUE;// Set The Status To TRUE

glGenTextures(1, &texture[1]);// Create Three Textures

// Create MipMapped Texture
glBindTexture(GL_TEXTURE_2D, texture[1]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
}
if (TextureImage[0]=LoadBMP(map[2]))
{
Status=TRUE;// Set The Status To TRUE

glGenTextures(1, &texture[2]);// Create Three Textures

// Create MipMapped Texture
glBindTexture(GL_TEXTURE_2D, texture[2]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
}
if (TextureImage[0]=LoadBMP(map[3]))
{
Status=TRUE;// Set The Status To TRUE

glGenTextures(1, &texture[3]);// Create Three Textures



// Create MipMapped Texture
glBindTexture(GL_TEXTURE_2D, texture[3]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
}



if (TextureImage[0])// If Texture Exists
{
if (TextureImage[0]->data)// If Texture Image Exists
{
free(TextureImage[0]->data);// Free The Texture Image Memory
}

free(TextureImage[0]);// Free The Image Structure
}

return Status;// Return The Status
}


[解决办法]
再或者把工程改成Unicode。

探讨

楼主应该用的不是Unicode的工程。
换个类型把TCHAR换成,char

[解决办法]
楼主定义的时候可以把char全部定义为TCHAR,然后字符串外面全部使用宏_T来表示。
比如:TCHAR buff[]=_T("afefsf");

读书人网 >C++

热点推荐