C++ c++';CA2W';:找不到标识符
为什么获取“CA2W”:找不到标识符C++ c++';CA2W';:找不到标识符,c++,visual-c++,winapi,C++,Visual C++,Winapi,为什么获取“CA2W”:找不到标识符 for(DWORD i = 0; i < numMaterials; i++) // for each material... { material[i] = tempMaterials[i].MatD3D; // get the material info material[i].Ambient = material[i].Diffuse; // make ambient the same a
for(DWORD i = 0; i < numMaterials; i++) // for each material...
{
material[i] = tempMaterials[i].MatD3D; // get the material info
material[i].Ambient = material[i].Diffuse; // make ambient the same as diffuse
USES_CONVERSION; // allows certain string conversions
// if there is a texture to load, load it
D3DXCreateTextureFromFile(d3ddev,
CA2W(tempMaterials[i].pTextureFilename),
&texture[i]);
texture[i] = NULL; // if there is no texture, set the texture to NULL
}
for(DWORD i=0;i
向我们展示您的代码,否则我们将无能为力
您得到的错误意味着:“什么是CA2W
这意味着您正在使用标识符CA2W,但它没有被声明为任何东西。显示您的代码,否则我们将无能为力 您得到的错误意味着:“什么是CA2W
这意味着您正在使用标识符CA2W,但它没有被声明为任何东西。因此,请尝试此操作-创建一个Win32控制台项目,然后用下面的代码替换给定代码,该代码对我来说可以编译。如果这不能为您编译,我会很困惑-也许重新安装Visual Studio?似乎有很多人可以正确地编译它,那么您的VisualStudio安装有什么问题呢
// testconv.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <atlconv.h>
#include <atlbase.h>
#include <atlstr.h>
int _tmain(int argc, _TCHAR* argv[])
{
USES_CONVERSION;
WCHAR *pChar = CA2W(NULL);
return 0;
}
//testconv.cpp:定义控制台应用程序的入口点。
//
#包括“stdafx.h”
#包括
#包括
#包括
int _tmain(int argc,_TCHAR*argv[]
{
使用_转换;
WCHAR*pChar=CA2W(空);
返回0;
}
所以试试这个-创建一个Win32控制台项目,然后用下面的代码替换给定的代码,这对我来说很好。如果这不能为您编译,我会很困惑-也许重新安装Visual Studio?似乎有很多人可以正确地编译它,那么您的VisualStudio安装有什么问题呢
// testconv.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <atlconv.h>
#include <atlbase.h>
#include <atlstr.h>
int _tmain(int argc, _TCHAR* argv[])
{
USES_CONVERSION;
WCHAR *pChar = CA2W(NULL);
return 0;
}
//testconv.cpp:定义控制台应用程序的入口点。
//
#包括“stdafx.h”
#包括
#包括
#包括
int _tmain(int argc,_TCHAR*argv[]
{
使用_转换;
WCHAR*pChar=CA2W(空);
返回0;
}
编辑:OP刚刚告诉我Visual Studio 2010 Express用于编译代码。这就解释了为什么找不到CA2W
,因为Express版本不包含整个ATL/MFC库。因此,我最初的答案与OP无关
故事的寓意:在问这类问题时,一定要确切地提到你所处的环境。
与使用CA2W
不同,您可以使用-此函数是CA2W
实际用于转换字符串的函数,因此您将得到基本相同的结果
。它用于从std::string
到LPCWSTR
的转换,但基本上是相同的过程
原始答案:根据要求,您必须包括:
#include <atlbase.h>
#include <atlconv.h>
int main()
{
// Explicitly qualified the CA2W identifier
ATL::CA2W("Hello World!"); // Test to see if this compiles
}
#包括
#包括
int main()
{
//显式限定CA2W标识符
ATL::CA2W(“Hello World!”);//测试是否编译
}
我认为这个代码片段以前不起作用的原因是因为您在\include
编辑之前的某个地方定义了\define
'd\u ATL\u NO\u AUTOMATIC\u NAMESPACE
:OP刚刚告诉我Visual Studio 2010 Express是用来编译代码的。这就解释了为什么找不到CA2W
,因为Express版本不包含整个ATL/MFC库。因此,我最初的答案与OP无关
故事的寓意:在问这类问题时,一定要确切地提到你所处的环境。
与使用CA2W
不同,您可以使用-此函数是CA2W
实际用于转换字符串的函数,因此您将得到基本相同的结果
。它用于从std::string
到LPCWSTR
的转换,但基本上是相同的过程
原始答案:根据要求,您必须包括:
#include <atlbase.h>
#include <atlconv.h>
int main()
{
// Explicitly qualified the CA2W identifier
ATL::CA2W("Hello World!"); // Test to see if this compiles
}
#包括
#包括
int main()
{
//显式限定CA2W标识符
ATL::CA2W(“Hello World!”);//测试是否编译
}
我认为这个代码片段以前不起作用的原因是因为您在
\include
之前的某个地方定义了\define
'd\u ATL\u AUTOMATIC\u NAMESPACE
检查ATL头文件atlconv.h
和atlbase.h
的路径是否对Visual Studio可见
在垄断.cpp文件中,右键单击行#include
,然后选择打开文档atlconv.h。如果头文件正确打开,则表示位置没有问题。相反,如果它抛出一个错误,则意味着VStudio无法定位该文件,这就是它显示“未找到标识符”的原因
在错误消息中,VStudio显示其查找头文件的文件夹的路径。检查列表是否包含类似于“C:\Program Files(x86)\Microsoft Visual Studio 9.0\VC\ce\atlmfc\include”的路径,其中存在ATL头文件。如果缺少该路径,请按如下方式包括该路径(使用适合您的操作系统和您正在使用的VStudio版本的路径):Visual Studio:工具->选项->项目和解决方案->VC++目录->显示包含文件的目录.检查ATL头文件
atlconv.h
和atlbase.h
的路径是否对Visual Studio可见
在垄断.cpp文件中,右键单击行#include
,然后选择打开文档atlconv.h。如果头文件正确打开,则表示位置没有问题。相反,如果它抛出一个错误,那么我