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