2010-10-06 204 views
1

如何创建文本文件?visual C++创建文本文件

CreateFile("1",    
       GENERIC_READ | GENERIC_WRITE, 
       0,      
       NULL,     
       CREATE_NEW,   
       FILE_FLAG_OVERLAPPED, 
       NULL); 

1> ------构建开始:项目:TEST2,配置:调试的Win32 ------ 1>测试2.cpp 1> C: \ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(126):error C2065:'GENERIC_READ':未声明的标识符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(126):error C2065:'GENERIC_WRITE':未声明的标识符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(128):错误C2065: 'NULL':未声明的标识符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(129):error C2065:'CREATE_NEW':未声明的标识符 1> c:\用户\kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(130):error C2065:'FILE_FLAG_OVERLAPPED':未声明的标识符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(131):error C2065:'NULL':未声明的标识符 1> c:\ users \kredkołamacz\ documents \ visual studio 2010 \ projects \ test2 \ test2 \ Form1.h(125) C3861:'CreateFile':标识符未找到 ==========构建:0成功,1失败,0最新,0跳过==========

+1

我想你需要包含CreateFile() - WinBase.h(包括Windows.h)的头文件 - 从http://msdn.microsoft.com/en-us/library/aa363858%28VS.85% 29.aspx – Tim 2010-10-06 15:13:01

回答

2

包含Windows头文件在你.h.cpp文件顶部如下:

#include <windows.h> 

这应该解决与未定义的符号,如GENERIC_WRITECreateFile的问题。正如另一张海报中提到的,您通常应该在.cpp文件中编写代码,并且只在头文件中声明常量或类,同时将方法实现放在.cpp文件中以及常规函数中。

一旦你越过这点与CreateFileW这些问题需要一些更多的解释:

默认情况下,从Visual Studio模板生成Windows应用程序链接针对的Windows API的的Unicode(宽字符)版本,并有UNICODE定义的C/C++预处理器宏指示这一点。当定义了UNICODE时,预处理器将符号CreateFile定义为展开为实际基础Windows函数名称的名称,其名称为CreateFileW,其中W后缀表示它是“宽字符”即Unicode函数。如果未定义UNICODE宏(可通过各种Visual Studio项目设置覆盖该宏),则CreateFile将扩展为CreateFileA符号,该符号是该函数的ANSI字符串版本(ANSI的A)的名称。 99%的时间应该使用UNICODE的默认设置,因为所有现代版本的Windows都在内部使用Unicode字符。

由于CreateFileW需要Unicode字符串参数需要传递L"1"(即一个宽字符串文字),或使用TEXT宏(例如TEXT("1"))的UNICODE编译器开关是否被定义,这将产生对应于正确的字符串类型或不。

以下是关于TEXT的MSDN文章的链接:link

+0

不工作,我将它添加到.cpp文件 – asd 2010-10-06 15:18:46

+0

根据您的错误输出,您将代码放在头文件中。在使用这些符号之前,您需要放置windows.h。通常你不要把代码放在头文件中。 (所有的模板废话尽管) – Tim 2010-10-06 15:20:28

+0

当我将它添加到.h文件:'CreateFileW':不能将参数1从'const char [2]'转换为'LPCWSTR' 1>指向的类型是不相关的;转换需要reinterpret_cast,C风格转换或函数风格转换 – asd 2010-10-06 15:20:53