在VC++6.0中,总是出现一个叫error spawning c1.exe的错误,怎么回事呢? vc6.0一直有error spawning c1.exe错...

作者&投稿:芝匡 (若有异议请与网页底部的电邮联系)
楼上正解
我这里有基本错误的解决办法
以后一定会用到:

在创建项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex

下面介绍解决的方法:
1. Windows子系统设置错误, 提示:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Windows项目要使用Windows子系统, 而不是Console, 可以这样设置:
[Project] --> [Settings] --> 选择"Link"属性页,
在Project Options中将/subsystem:console改成/subsystem:windows

2. Console子系统设置错误, 提示:
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
控制台项目要使用Console子系统, 而不是Windows, 设置:
[Project] --> [Settings] --> 选择"Link"属性页,
在Project Options中将/subsystem:windows改成/subsystem:console

3. 程序入口设置错误, 提示:
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口:
[Project] --> [Settings] --> 选择"C/C++"属性页,
在Category中选择Output,
再在Entry-point symbol中填入wWinMainCRTStartup, 即可

4. 线程运行时库设置错误, 提示:
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
这是因为MFC要使用多线程时库, 需要更改设置:
[Project] --> [Settings] --> 选择"C/C++"属性页,
在Category中选择Code Generation,
再在Use run-time library中选择Debug Multithreaded或者multithreaded
其中,
Single-Threaded 单线程静态链接库(release版本)
Multithreaded 多线程静态链接库(release版本)
multithreaded DLL 多线程动态链接库(release版本)
Debug Single-Threaded 单线程静态链接库(debug版本)
Debug Multithreaded 多线程静态链接库(debug版本)
Debug Multithreaded DLL 多线程动态链接库(debug版本)
单线程: 不需要多线程调用时, 多用在DOS环境下
多线程: 可以并发运行
静态库: 直接将库与程序Link, 可以脱离MFC库运行
动态库: 需要相应的DLL动态库, 程序才能运行
release版本: 正式发布时使用
debug版本: 调试阶段使用

VC 6.0“Compiling... ,Error spawning cl.exe”错误解决
Posted on 2005-06-03 19:55 k_eckel 阅读(8862) 评论(100) 编辑 收藏
可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的“Compiling... ,Error spawning cl.exe”错误提示给郁闷过。很多人的选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。
因此问题可以按照以下方法解决:点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。

nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
解决方法:

在Preprocessor中定义_AFXDLL

如果它提示:
fatal error C1189: #error : Please use the /MD switch for _AFXDLL builds

就这样改:

C/C++->Code Generation->Multithread DLL (即实现/MD选项)

Visual C++ Error MessagesThis page contains a listing of "difficult to diagnose" error messages and possible fixes. I haven't taught a programming class that uses Visual C++ in several years so this list is probably out of date by now. It was valid for Microsoft Visual C++ version 6.0 service pack 3.

--------------------------------------------------------------------------------

C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 1786) Please choose the Technical Support command on the Visual C++ Help menu, or open the Technical Support help file for more information

This error results from leaving off the parentheses immediately following the function name in a function header. To correct the error simply add () to the end of the function name.

--------------------------------------------------------------------------------

C1010: unexpected end of file while looking for precompiled header directive

If your project is an MFC AppWizard created project then this error results from not #including StdAfx.h as the first #i nclude statement (before any other #i ncludes, data declarations, or executable program code).

--------------------------------------------------------------------------------

C1083: Cannot open precompiled header file: 'Debug/<Project-Name>.pch': No such file or directory

This error results from a missing file - the compiled version of StdAfx.cpp. Visual C++ does a poor job of keeping track of this file and frequently "forgets" how to build it. This problem often occurs after restoring a saved workspace from diskette without the Debug directory. To fix the error select StdAfx.cpp from the workspace file list them choose Compile from the Build menu. If that doesn't work the go to Project -> Settings, select the C/C++ tab, and click the radio button labeled Create Precompiled Headers.

--------------------------------------------------------------------------------

C2001: newline in constant

This error is usually caused by a string or character constant that is missing its closing ' or " symbol.

--------------------------------------------------------------------------------

C2065: '<data-member name>' : undeclared identifier

If this error occurs in one of your member functions then it is generally the result of forgetting the class scope operator in front of the function name in your .cpp file.

--------------------------------------------------------------------------------

C2143: syntax error : missing ';' before 'PCH creation point'

Check each of the #i nclude files to ensure that the closing brace of each class declaration is followed by a semicolon.

--------------------------------------------------------------------------------

C2143: syntax error : missing ';' before '*'

If this error is followed by two C2501 errors then the problem is an undeclared class name within a pointer declaration.

For example, the declaration:

CClass *pObject;

will generate the above error message followed by a C2501 error message for 'CClass' and another C2501 message for 'pObject'. The problem is that the compiler isn't recognizing CClass as a valid class/type name. To correct the problem add a #i nclude of the file containing the declaration of CClass (e.g., #i nclude CClass.h)

--------------------------------------------------------------------------------

C2447: missing function header (old-style formal list?)

This error usually results from a missing { or use of a ; instead of a { following the parameter list of a function header.

--------------------------------------------------------------------------------

C2511: '<function-name>' : overloaded member function not found in '<class-name>'

This error results from a mismatch in the parameter list of a member function declaration (.h file) and definition (.ccp file). Check the forward declaration of the function in the .h file and its definition in the .cpp file and ensure that the number of parameters and the type of each parameter match exactly.

--------------------------------------------------------------------------------

C2512: '<constructor-function-name>' : no appropriate default constructor available

This error usually occurs when you implement the constructor function of a derived class and forget to include parameter passing to the base class constructor function. For example assume that CDerived is derived from CBase and that the CBase constructor function requires one parameter (e.g., int A). If you define the CDerived constructor function as:

CDerived::CDerived(int A, int B) { ... }

the compiler will issue the above error message on the line containing the function header of CDerived::CDerived() because you haven't provided instructions for routing the parameter A to CBase::CBase(). Because you didn't provide instructions the compiler assumes that CBase::CBase() requires no arguments and it complains because no version of CBase::CBase() has been defined that accepts zero arguments.

If you intended to provide a version of CBase::CBase() that requires no arguments then the error message indicates that you forgot to declare that function in your base class declaration (e.g., in CBase.h).

If CBase::CBase() does require one or more arguments then you must correct the problem by including explicit instructions for passing parameters from the derived class constructor function to the base class constructor function. The correction for the example above is:

CDerived::CDerived(int A, int B) : CBase(A) { ... }

--------------------------------------------------------------------------------

C2556: '<function-name>' : overloaded functions only differ by return type
C2371: '<function-name>' : redefinition; different basic types

These errors usually result from a mismatch of function type between a .h and .cpp file. Check the forward declaration of the function in the .h file and its definition in the .cpp file and make the function return type identical in both files.

--------------------------------------------------------------------------------

C2601: '<function-name>' : local function definitions are illegal

This error results from defining one function inside the body of another function. It usually means that you omitted one or more } symbols in the function just before the function named in the error message.

--------------------------------------------------------------------------------

C2653: '<Class-Name>' : is not a class or namespace name

This error usually results from not having #i nclude "StdAfx.h" as the first #i nclude statement in your class.cpp file. It can also occur if your class definition is in a .h file and you forget to #i nclude that .h file in another file that refers to the class name.

--------------------------------------------------------------------------------

C2661: '<Class-Name>::<Function-Name>' : no overloaded function takes n parameters

This error indicates a mismatch between the parameters used in a function call (e.g., from main.cpp) and the declaration of the function. The function call is passing n parameters and there is no function declaration that uses that number of parameters.

--------------------------------------------------------------------------------

LNK1104: Cannot open file nafxcwd.lib

This error sometimes occurs when a project uses a class from the MFC but the project settings don't explicitly tell the link editor to look in the MFC libraries.

Go to Project --> Settings (Build --> Settings in Visual C++ 4.0). On the General tab check the box that says "Use MFC in a Shared DLL".

--------------------------------------------------------------------------------

LNK1168: cannot open Debug\<Project-Name>.exe for writing

This error occurs when the link editor attempts to write to a .exe file that is currently in use. The .exe file of an executing program is write protected until the program is terminated. Look at the status bar at the bottom of your screen and find the icon representing your executable application. Open the application and exit from it. Then select Build.

--------------------------------------------------------------------------------

LNK2001: unresolved external symbol __endthreadex
LNK2001: unresolved external symbol __beginthreadex

These errors result from using an MFC object or function without telling the link editor to search the MFC libraries.

Go to Project --> Settings (Build --> Settings in Visual C++ 4.0). On the General tab check the box that says "Use MFC in a Shared DLL".

--------------------------------------------------------------------------------

LNK2001: unresolved external symbol _main

Your project doesn't contain a function called main(). The error usually results from forgeting to add main.cpp to the project workspace.

--------------------------------------------------------------------------------

<File>.obj : error LNK2001: unresolved external symbol "public: void __thiscall <Class1>::<Function1>(<Type>)"

This a generic form of a LNK2001 error where <File>.obj can be any object file in your project and <Class1>::<Function1>(<Type>) can be any function in any class. Substitute the specific <File>, <Class>, <Function>, and <Type> in your message into the instructions below to diagnose and correct the problem.

An LNK2001 error means that the link editor is looking for a compiled function and can't find it. The call to the "missing function" is somewhere in <File>.cpp. Unfortunately, double-clicking on the error message won't take you to the point in <File.cpp> where the function is called but you can search for it with Find or Find In Files. The function the link editor can't find is a member of <Class>, its name is <Function1>, and its return type is <Type>.

There are two common reasons for a LNK2001 error:

The call in <File>.cpp doesn't match the function prototype in <Class>.h and/or the implementation in <Class>.cpp. The mismatch may be in the function name, return type, or number and/or type of parameters. Correction strategies include:
Check that the function name is spelled the same (case sensitive) in all three files (File.cpp, Class.h, and Class.cpp).
Check that the function is actually declared and defined within <Class> - perhaps you defined it as a member of a different class or perhaps you tried to call the function (in <File>.cpp) using an object or object pointer of a different class.
Check that the number and type of parameters in the function implementation (in <Class>.cpp) matches the number and type of parameters declared in the function declaration in <Class>.h.
Check that the number and type of parameters in the function call (in <File>.cpp) matches the number and type of parameters declared in the function header in <Class>.cpp.
The function was never declared or was declared but never defined. To see if either is the case go to the ClassView window of the Workspace view. Click the + next to <Class> and find <Function> in the list of member functions.
If <Function> is NOT in the list then it was never declared or defined - add a declaration to the class declaraion in <Class>.h and implement the function in <Class>.cpp.
If <Function> is in the list then right click on it and select Go To Definition from the pop-up menu. If you get the error message Cannot find definition (implementation) of this function then the function was declared but never defined (implemented). Implement the function to <Class>.cpp.

--------------------------------------------------------------------------------

LNK2005: <some-long-string-of-mostly-garbage> already defined in <name>.lib(<name>.obj)

This error usually results from including a source code file multiple times. If you recognize any of the names in the message then it probably results from multiple inclusion of one of your own header files. Check to be sure that you've used #ifndef/#define/#endif properly your header files. If you don't recognize the name then it's probably multiple inclusion of a system file (e.g., afxwin.h). Make sure that you haven't explicitly included something in main.cpp that is already included in one of your own header files. Also check that you haven't #i ncluded a .cpp file where you should have #i ncluded a .h file.

可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的“Compiling... ,Error spawning cl.exe”错误提示给郁闷过。很多人的选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,你可以到相应的路径下找到这个应用程序。
因此问题可以按照以下方法解决:点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。很多情况可能就一个盘符的不同(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。
参考资料:http://www.mscenter.edu.cn/blog/k_eckel/articles/3016.html

为什么编译和运行vc++ 时会出现Error spawning c1.exe 的错误~

那个不叫C1.exe,是cl.exe,文件在VC安装目录的bin下边,这种错误一般是在进行编译时找不到文件所致,不过个人认为大多数是程序中使用了某一个静态库,而在进行编译的时候找不到该静态库所致。
原因是这些,解决方法,网上说的基本都没错。Excutable file就是VC安装目录下的bin目录,include Files是安装目录下的include文件夹,Library Files是lib目录, Source Files,设置一下自己工程的引用目录,不过这个一般建立工程,进行文件加入,并且insert into project的话,不会有什么问题。
最后建议,重新安装VC,这是最好的方式。如果还有问题,应该就是程序的问题了。

出现这种问题的vc6一般是所谓的绿色版精简版(其实现在的绿色版很多也要写注册表和设置一些系统配置),出现编译不通过的原因主要是vc6的配置文件没有设置好,一些建议重装之类的方法有点误人子弟。
打开vc界面 点击VC“TOOLS(工具)”—>“Option(选项)” —>“Directories(目录)”重新设置“Excutable Fils(可执行文件)、Include Files、
Library Files、Source Files”的路径(注意这些是下拉框框里可以选的哦)。很多情况可能就一个盘符的不同
(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。
如果你是按照初始路径安装vc6.0的,路径应为: (有下画线的自己去找你的相应的目录)
executatble files:
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
C:\Program Files\Microsoft Visual Studio\VC98\BIN
C:\Program Files\Microsoft Visual Studio\Common\TOOLS
C:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT
include files:
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
library files:
C:\Program Files\Microsoft Visual Studio\VC98\LIB
C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB
source files:
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC

如果你装在其他盘里,则仿照其路径变通就行(我就是装在D盘)。
关键是microsoft visual studio\ 后面的东西要相同,例如你的目录是E:\vc6,就把下划线的部分换成E:\vc6。

关于用VC++6.0 设计的程序总是显示一个错误
答:程序没问题,我的VC++6.0可以编译并运行处正确结果,你看是不是你建工程文件的时候没有建对,如果建对了的话,你的软件就是有问题的 建工程文件步骤如下:1、点击左上角的“文件”按钮 2、点击选项卡的“新建”按钮 3、点击弹出来的对话框左上角的“文件”,然后选择C++ Source File,右边文件...

vc++6.0总是出现一个错误
答:双引号你用的是中文引号,改成英文的。main小写

vc++6.0总出现错误这个怎么办?
答:比如头文件缺失或者错误,等等。win7 64位VC++6.0调试代码无法关闭窗口解决方法。VC6在64位Windows7下调试的时候,再结束调试,程序无法退出。问题描述:当我击F5开始一个项目的调试时,程序在我设置的断点处停止,这时按下Shift+F5后,vc6可以退出调试状态,但是WINDOWS系统的任务栏上会留下前面调试时...

为什么我的vc++6.0总是显示有一个错误,编译不了 ---
答:把那个int main()换成void main()就OK了

急啊,谢谢啦,用VC6.O进行调试时总是出现这个窗口,不能调试,怎么办?
答:我有更好的答案推荐于2017-12-15 11:01:38 最佳答案 Administrator privileges required for ole remote procedure call debugging :this feature will not work( 需要管理员权限的ole远程过程调用调试:这个特性将不会工作),用管理员身份运行一下 vc ++6.0 就行了,之后都能进行调试了。还有win7安装vc6时最好...

VC++不能在win10上正常运行,总显示有一个错误,怎么办?
答:VC++6.0安装后无法在Win10系统中正常启动怎么办?2.直接将英文版的msdev.exe复制到Bin目录下并且覆盖。有的同学可能是绿色版的VC++6.0,这种版本的vc可能为了兼容改了文件名,不叫msedv.exe,不用管,你将英文版复制进去之后,每次启动时启动复制进去的英文版就是的。你可以右键发送一个快捷方式到...

win7系统安装VC++6.0,运行时总是出现“Error spawning cl.exe...
答:你可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—> “Option(选择)”—> “Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。很多情况可能就一个盘符的不同 (例如你的VC装...

我在执行vc++6.0总是出现一个问题 求解谢谢
答:这是C最基本的头文件,编译器提示找不到,说明你库函数包含路径错误!到菜单栏的工具选项里选择目录,把所有的包含路径改正确就行了。

为什么我用VC6.0在W7环境下编写的程序总是出现一个错误
答:如果你不想要返回值就在主函数main前面加上void,否则加上int后再加上return 0;

使用vc++6.0运行总是一个错误的原因,而且每次都说是cannot open file...
答:不好判断LZ是什么情况,你先比着下面的方法配置一下路径,如果不行的话再重新配置环境变量试试 方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。executatble files:VC根目录\...