-
出现"eh.h is only for C++!"错误的解决方法
注意: vc在处理.c 文件是按 C 语言编译的,所以
假如有以下文件: 1.c
#include <fstream>
int main(int argc, char* argv[])
{
return 0;
}
那么编译时就会出错:
fatal error C1189: #error : "eh.h is only for C++!"
这是因为fstream标准库要求用到eh.h文件,而Exception Handling的实现需要c++支持。
只要把1.c改成1.cpp即可 - LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 Debug/firstapi.exe :
- 项目创建错误,应该选择Win32 Console Project,而不是 Win32 Project
-
致命错误C1010:在寻找预编译指示头文件时,文件未预期结束。 就是没有找到预编译指示信息的头文件。 问题一般发生在:通过添加文件的方式,添加了一些cpp文件到一个MFC的程序,但该cpp文件并不是MFC,而是标准的C++。 解决方案1: 右键单击项目工程中的cpp文件,在菜单Project->Settings->C/C++->Precompile Header,设置为第一项:Not using precompile headers。 解决方案2:在.cpp文件开头添加包含文件stdafx.h。 #include"stdafx.h"
关于#include"stdafx.h"如何理解其原理 通俗一点说 当我们使用AppWizard来自动生成某些项目的时候,系统会自动把所需要include的头文件在stdafx.h中先include一下,这样,我们只需要直接include这个stdafx.h文件即可.因为同一个项目中的不同源文件CPP都包含相同的include文件,这样,为每个.CPP文件都重复include这些文件就显得很傻了。当然如果你不用MFC的话就不用了。即:在每个.cpp文件中都include stdafx.h 就相当于包含了其他的如iostream.h等文件 与stdio.h的区别 我们一般用TC或vc编译C程序的时候都要首先包含这个stdio.h头文件,这个头文件里面包含了scanf和printf函数的定义,如果我们不在程序开头include这个文件,那么你调用上面这两个函数就不会成功,它其实和c++中的iostream.h文件的作用差不多的,它们一般都已经在stdafx.h文件中被包含。
- fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory但在出现这个时则需要把
在VC++6.0中新建一个Win32 Console Application工程,然后将上述代码复制过去.同时,去掉
#include "stdafx.h" 语句.然后执行既可通过.
出现这类错误,都需要将#include "stdafx.h"这条语句去掉
- error C2065: 'getline' : undeclared identifier
-
getlie这个标识名有命名空间 std中定义的。如果要使用,还加上 using namespace std;
有两种解决方法: 1、到网上下载一个,百度或GOOGLE一下就会有很多下载地址; 2、在VC工程中,在Project Settings中,General标签下的Microsoft Foundation Classes选Use MFC in a Static Library,这样会使用VC++“\Program Files\Microsoft Visual Studio\VC98\Lib\”目录下的静态库 Msvcrtd.lib。