本文迁移自本人网易博客,写于2015年11月25日,编译错误2 - lysygyy的日志 - 网易博客 (163.com)
![](https://i-blog.csdnimg.cn/blog_migrate/2d2a4d42eeb97a0d732579f30af787a2.png)
1、error C2059:语法错误:“<L_TYPE_RAW>”
error C2238:意外的标记位于“;”之前.
错误代码定位于:
BOOL TreeView_GetCheckState(HWND hwndTreeView, HTREEITEM hItem);
原因:低版本升级高版本的问题。_WIN32_IE 0x0400正确,若改成_WIN32_IE 0x0500出现如题错误,因为函数名TreeView_GetCheckState正好与一个宏同名了,最好是修改该函数名。
需修改头文件“StadAfx.h”如下:
#define STRICT
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN //- Exclude rarely-used stuff from Windows headers
#endif
//- Modify the following defines if you have to target a platform prior to the ones specified below.
//- Refer to MSDN for the latest info on corresponding values for different platforms.
#ifndef WINVER //- Allow use of features specific to Windows 95 and Windows NT 4 or later.
#define WINVER 0x0500 //- Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
#endif
#ifndef _WIN32_WINNT //- Allow use of features specific to Windows NT 4 or later.
#define _WIN32_WINNT 0x0400 //- Change this to the appropriate value to target Windows 2000 or later.
#endif
#ifndef _WIN32_WINDOWS //- Allow use of features specific to Windows 98 or later.
#define _WIN32_WINDOWS 0x0410 //- Change this to the appropriate value to target Windows Me or later.
#endif
#ifndef _WIN32_IE //- Allow use of features specific to IE 4.0 or later.
#define _WIN32_IE 0x0400 //- Change this to the appropriate value to target IE 5.0 or later.
#endif
2、error PRJ0002 : 错误的结果 31 (从“C:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\mt.exe”返回)。
方法1:重新编译可成功,但该错误经常会出现。
3、1>mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file "..\bin2010\CheckPromptUI_JL.arx". f
方法1:重新编译可成功,但该错误经常会出现。
4、error C2061: 语法错误 : 标识符“CStringArrayArray”
5、fatal error C1076
编译错误
fatal error C1076: 编译器限制,达到内部堆限制;使用/Zm指定更高的限制。
编译器选项 /Zmnumber
在“项目属性”的命令行下,添加/Zmnumber,其中number是自己想要指定的比例系数;
可以指定的值是:10,100,200,1000,2000,对应的memory alloction是5.0M,50MB,100MB,500MB,1000MB;
在过去的VC版本中,编译器使用的堆内存是离散的,每块都有上限;
现在编译器是按照需要动态来分配堆内存的;
但仍然给预编译头文件以有限固定堆内存的大小;如果不够,会给出C1076错误;
这只是在写一些非常复杂的程序时才出现;
解决方法:
进入工程->点右键->工程属性->c++-〉命令行,在最下边输入/Zm200,点确定。
6、error C3506: 没有为 LIBID“{6FCCEDE0-179D-4D12-B586-58C88D26CA78}”注册的类型库
fatal error C1104: 导入 libid 时遇到错误:“6FCCEDE0-179D-4D12-B586-58C88D26CA78”
解决方法:安装ArcGIS10.0以上运行时。
7、dynaset.cpp:error 1083:无法打开包括文件“stdafx.h”:No such file or directory.
解决方法:将dynaset.cpp设为不使用预编译头,并去掉 #include "stdafx.h";
StandardBar.h(20) : fatal error C1083: 无法打开包括文件:“resource.h”: No such file or directory
解决方法:屏蔽掉 " #include "resource.h" "
8、error C3859: 超过了 PCH 的虚拟内存范围;请使用“-Zm126”或更大的命令行选项重新编译
fatal error C1076: 编译器限制 : 达到内部堆限制;使用 /Zm 指定更高的限制
解决方法如下图所示:
9、1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\atlmfc\include\afxv_w32.h(16) : fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
10、LNK2005:_PchSym已经在acrxEntryPoint.obj中定义
在项目->属性->链接器->命令行->附加选项中加 /force
忽略掉第二定义。
11、fatal error LNK1169: 找到一个或多个多重定义的符号
当.h文件里有函数实现时
VS2005编译器报此错误,
解决方法
1.在.h里的函数声明前加 inline
2.在项目->属性->链接器->命令行->附加选项中加 /force