编译出错:fatal error C1001: INTERNAL COMPILER ERROR 和 链接出错 unresolved external symbol _WinMain@16

1.fatal error C1001: INTERNAL COMPILER ERROR

最近在编译一个VC6.0工程(开发环境:win2000+VS6.0+Sp6),在加入预编译头后出现了下面的编译错误提示: c:/program files/microsoft visual studio/vc98/include/xlocnum(106) : fatal error C1001: INTERNAL COMPILER ERROR         (compiler file 'msc1.cpp', line 1794)          Please choose the Technical Support command on the Visual C++          Help menu, or open the Technical Support help file for more information Error executing cl.exe.

 工程中的每个cpp文件编译都没有问题(除了预编译头对应的cpp文件),很是奇怪,于是在网上找了一下,找到下面一种解决办法:

VC6.0的一个编译错误的解决

在window98下使用vc6.0时,如果预编译头文件(stdafx.h)中包含了模板类的头文件,比如atl的头文件时,编译器会报错: fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 1786)

造成这种问题的原因是编译器分配的内存超过了限制。 解决的办法有三种: 1.给编译器增大内存限制。在project(工程)->setting(设置)->c/c++的project option(工程选项)中,添加/Zm#nn选项,#nn是一个数字,取值最大为2000。默认为100。但是这种方法好像没有什么用处。 2.将模板类头文件从stdafx.h中移出; 3.不使用预编译头文件。project->setting->c/c++,选择所有的.cpp文件,都使用“不使用预编译头文件“的选项。缺点是编译的时候很慢。

http://www.ieasy.org/yuzuo/archives/2005_07.html

还有一个英文的:

I see that while compiling ITEL.CPP it is trying and failing to open Debug/IODIARY.PCH. I also see that there is no IODIARY.CPP. Exactly how is IODIARY.PCH supposed to be created? Turn off precompiled headers for all files in the project, and rebuild. If the build still fails, then... uh-oh.. Modify the project to use the default STDAFX.CPP/STDAFX.H method of using PCH. Then, add an empty file STDAFX.H and an empty file STDAFX.CPP to the project. Then, for each .CPP file, add as the first line #include "stdafx.h" . Then compile. This should work. If it does not... uh-oh. In order for pre-compiled headers to work properly each .CPP must have as its first #include statement the name of the one .H (such as STDAFX.H) that includes all the "actual" .H's (windows.h, stdio.h, etc.) that should be included by ALL .CPPs. That is the important part. You don't usually want EVERYsingle .H that is included in ANY .CPP in the project to be in STDAFX.H -- you do normally want windows.h, because it is the big one that can include a lot and is usually included in every .CPP. Putting just windows.h in stdafx.h (and removing it from all the .CPPs) can speed up the build tremendously. http://www.codecomments.com/archive307-2005-3-421145.html

在MSDN中搜索到这种错误相关主题:

*http://lab.msdn.microsoft.com/productfeedback/SearchResults.aspx?text=fatal+error+C1001%3a+INTERNAL+COMPILER+ERROR&stype=1&fields=1&type=0&witId=0&pId=0&category=0&os=0&oslang=0&status=0&msstatus=0&resolution=0&chgdays=&validation=0&votes=&voterating=0&workarounds=False&attachments=False

*http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/html/c1001.asp

后来把预编译去掉后,Build终于通过了运行了,可这也太慢了,郁闷中……

还不知有没更好的解决办法??同样的工程放在VC++.net2003中却编译顺利通过,运行正常.!!!!

 

2.unresolved external symbol _WinMain@16

下载源代码后链接出了问题,提示如上所示

在网上找到了解决方法

一,问题描述error LNK2001: unresolved external symbol _WinMainᤐdebug/main.exe:fatal error LNK 1120:1 unresolved externals error executing link.exe;

二,产生这个问题可能的原因

1, 你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain.

2.  你用vc打开了一个.c/.cpp 文件,然后直接编译这个文件,这个文件中使用了WinMian而不是main作为入口函数。vc这时的默认设置是针对控制台程序的。

三, 解决方法

1.进入project->setting->c/c++, 在category中选择preprocessor,在processor definitions中删除_WINDOWS, 添加_CONSOLE

2.进入project->setting->Link, 在Project options中将/subsystem:windows.改为/subsystem:console

3.保存设置,Rebuild All. 

你可能感兴趣的:(C/C++程序设计)