错误C2061:语法错误:标识符'CString'

错误C2061:语法错误:标识符'CString'和错误C2065:'CString':未声明的标识符

答案:由于您正在开发Win32控制台应用程序,因此您无法获得为不同项目类型添加的样板代码。

请在预编译的头文件后面的代码中包含<atlstr.h>。

嗨,
你能不能请问,我有哪些头文件可以包含在VC ++ 6.0中使用CString?Win32 DLL。我在网上看,我找不到一个有效的。一个建议使用AFX.h,另一个建议我们#include <stdafx.h>但我的项目已经有#include <stdafx.h>并且它还有#include <windows.h>,我也试过#include“fstream 。H” ; 但是我仍然得到编译错误

隐藏   复制代码

<span style="color:#111111"><span style="color:#000000">error C2061: syntax error : identifier 'CString'
error C2065: 'CString' : undeclared identifier</span></span>

Richard MacCutchan 5月19日 - 11月5:17

   CString是ATL / MFC的一部分; 这是一个ATL / MFC项目,你是否安装了支持库?

drcool23 5月19日 - 11月5:38   

是的,这是MFC项目。CString正在另一个模块中工作。在那里我看到他们使用的额外头文件是#include“fstream.h”。请让我知道解决方案是什么。这个项目是VC ++ 6.0吗?Win32 DLL。

3解决方案

我认为你没有在你的项目中使用MFC。


一种解决方案是使用

<span style="color:#111111"><span style="color:#000000">#include <atlstr.h></span></span>

drcool23 5月19日 - 11月5:30

   嗨,谢谢你的回复。包含#include <atlstr.h>后,我得到了致命错误“致命错误C1083:无法打开包含文件:'atlstr.h':没有这样的文件或目录”。我没有使用ATL,但是,我正在使用MFC。如果您有任何其他建议/解决方案,请告诉我。

CPallini 19年5月19日上午5:35

  如果您在DLL中使用MFC,那么应该没有任何问题(并且您不需要ATL)。无论如何,你说你正在构建一个Win32 DLL,而不是一个MFC。BTW通常Win32 DLL导入/导出字符串为LPSTR,你为什么不遵循这条路径?
作为最后的结果,你可以尝试David Ching的建议:
http ://www.eggheadcafe.com/software/aspnet/31827704/using-cstring-object-in-non-mfc-programs.aspx

ShilpiP 5月19日 - 11月5:48

   Cpallini是对的。我们不能在VC6.0中使用。如果您使用MFC而不是您没有收到此错误。
您可以在项目属性中检入 - > genral。有一个标签Microsoft Foundation Class。
我在VC6.0中所做的一个解决方案是使用basic_string。它有字符串和wstring。

CPallini 19年5月19日上午5:32

   但是,您不能将它与VC6一起使用(我相信您可以从Visual Studio 2003开始使用它)。

ShilpiP 5月19日 - 11月5:39

   哦,是的,我在VS2005中这样做。谢谢


两种方式:解决方案1

隐藏   复制代码

<span style="color:#111111"><span style="color:#000000">#include <string.h></span></span>


要么

隐藏   复制代码

<span style="color:#111111"><span style="color:#000000">#include <cstring></span></span>


后者将CString作为Std命名空间的一部分。
 

drcool23 19年5月19日上午5:26

   嗨,谢谢你的回复。我试过这个解决方案。但是,它不起作用。存在相同的错误。

CPallini 5月19日 - 11月5:28

   不,CString不是std命名空间的一部分,正如Richard正确指出的那样,CString是一个ATL / MFC类。

drcool23 5月19日 - 11月5:40

   这是MFC项目。CString正在另一个模块中工作。在那里我看到他们使用的额外头文件是#include“fstream.h”。请让我知道解决方案是什么。这个项目是VC ++ 6.0吗?Win32 DLL。

Stefan_Lang 19-May-11 7:09 am

我不能肯定地说,但我认为CString是在VS 2003中引入的,所以VC ++ 6甚至可能都没有。

或者,如果它在VC 6中,它可能只包含在命名空间ATL中,因此您可以尝试使用ATL :: CString,或者
使用ATL 插入该行; 

您还可以尝试使用早期名称CAtlString(或ATL :: CAtlString?我不知道该类是否实际使用了命名空间)。

如果这两者都不起作用,那么你很可能已经拥有了VC ++的新版本。

PS:在搜索ATL :: CString的更多信息时,我发现它与MFC :: CString不完全相同。也似乎有些人一直在使用两者,

解决方案3

我发现以下文章表明你应该能够在VC 6中使用CString(与我在OriginalGriffs解决方案中的初始评论中的假设相反):
将MFC的CString类添加到没有MFC依赖关系的ATL中

 

猜你喜欢

转载自blog.csdn.net/qq_41786318/article/details/81223146