PWideChar参数的功能仅取第一个char

Mar*_*lka 4 delphi opengl string pointers char

我刚遇到一个奇怪的问题.我正在尝试将模型加载到OpenGL,在我加载纹理的部分我使用auxDIBImageLoadA(dibfile:PWideChar)函数.这是我的代码调用它

procedure CreateTexture(var textureArray: array of UINT; strFileName: string; textureID: integer);       // Vytvožení textury
var
  pBitmap: PTAUX_RGBImageRec;                                                   
begin
  if strFileName = '' then exit;                                                
  MessageBox(0,PWideChar(strFileName),nil,SW_SHOWNORMAL);
  pBitmap := auxDIBImageLoadA(PWideChar(strFileName));      
  if pBitmap = nil then exit;    
...
Run Code Online (Sandbox Code Playgroud)

MessageBox仅用于控制.这就是:我运行应用程序,"FACE.BMP"出现一个框.好的.但后来我说错了"Failed to open DIB file F".当我设置stFileNamexFACE.BMP,我得到一个"Failed to open DIB file x".因此,出于某种原因,该函数似乎只采用了第一个字符.

我错过了什么吗?我正在使用glaux.dll,我从不同来源下载了5次,所以它应该没有错误(我希望每个OpenGL网站都提到它).

Sti*_*ers 7

这很奇怪,以"A"结尾的函数通常采用PAnsiChar指针,而以"W"结尾的函数采用PWideChar指针.还有auxDIBImageLoadW电话吗?如果有使用那个,或尝试使用PAnsiChar,因为你传递的PWideChar(每个位置两个字节)如果被评估为1字节字符串,则看起来像一个字符长一个字符.