我初学VC++,安装的是Microsoft Visual C++ 6.0 简体中文企业版,跟着孙鑫老师的VC++视频教程第3课学习,用VC++的新建->工程->MFC AppWizard[exe]->单文档,工程名:Test,不用添加任何部件和对象就创建了一个单文档窗口Test.exe。我用保存和全部保存,关闭VC++后,重新打开VC++,按文件->打开Test.cpp,按编译可以通过,按组建(F7)或者执行(Ctrl+F5),就出现下面的错误信息:--------------------Configuration: Test - Win32 Debug--------------------
Linking...
Test.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CTestDoc::classCTestDoc" (?classCTestDoc@CTestDoc@@2UCRuntimeClass@@B)
Test.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CMainFrame::classCMainFrame" (?classCMainFrame@CMainFrame@@2UCRuntimeClass@@B)
Test.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CTestView::classCTestView" (?classCTestView@CTestView@@2UCRuntimeClass@@B)
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
libcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/Test.exe : fatal error LNK1120: 6 unresolved externals
执行 link.exe 时出错.Test.exe - 1 error(s), 0 warning(s)
我反复试过之前的几个能正常编译和组建、运行的程序,也都是出现“...1 error(s)...”提示,不知道是我操作问题还是程序问题?我将简体中文企业版删除,重新安装英文版,也是出现同样错误......。请大侠和老师指点迷津,万分感谢!

解决方案 »

  1.   

    新建的时可以编译、组建和运行,马上关闭后,再打开VC++,用打开工程目录下的.cpp文件,可以编译,但组建和运行都会提示错误,我是初学者,安装VC++6.0是采用全部安装,就是怕安装的部件不对;也不会进行工程设置,应该是安装后的默认设置。请大师们能帮忙指点!谢谢帮助!
      

  2.   

    本贴已经找到组建和运行时出错的原因,不是安装中文版或英文版的原因;也不是工程设置方面的问题,因为我不懂根本就不会设置,只能使用VC++系统的默认设置。错误是:我打开的文件应该是.dsp工程文件,由于是初学,我打开的是.cpp源文件(如Test.cpp),这样在前面几课是创建的Win32 Console Application控制台程序,用.cpp打开还可以。第3课起是MFC AppWizard[exe]文件,再用.cpp打开就出现问题,因为,创建MFC用到了许多类函数,在ClassView页签上可以看到有5个类函数(分别是CAboutDly、CDramApp、CDramDoc、CDramView和CMainFrame),如果还是用.cpp打开,在左边的ClassView页签上只能看到CAboutDly类函数,所以,在组建和运行时就会提示出错信息!感谢jennyvenus和shadow1226两位大侠的帮助和指点!
      

  3.   

    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
    libcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    ---------------------
    从最后一句看你的工程建错了,你选择的是Win32 console application。
    上面两句的话,你选择使用MFC的库即可。最前面的错误好像是你的宏没有实现,IMPLEMENT_XXX,看看你的cpp文件中有对应的没有?
      

  4.   

    谢谢VisualEleven大侠的指点和帮助!就是同一个Test工程(用VC++6.0的“新建”->“工程”->“MFC AppWizard[exe]”->“单文档”,工程名:Test),保存后,你做一个备份。然后,你用VC++6.0打开这个Test.dsp组建和运行都不会有错误提示!然后,你用备份的Test工程,用Test.cpp打开,再组建和运行,就会是下面的错误提示:--------------------Configuration: Test - Win32 Debug--------------------
    Linking...
    Test.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CTestDoc::classCTestDoc" (?classCTestDoc@CTestDoc@@2UCRuntimeClass@@B)
    Test.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CMainFrame::classCMainFrame" (?classCMainFrame@CMainFrame@@2UCRuntimeClass@@B)
    Test.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CTestView::classCTestView" (?classCTestView@CTestView@@2UCRuntimeClass@@B)
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
    libcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
    Debug/Test.exe : fatal error LNK1120: 6 unresolved externals
    执行 link.exe 时出错.Test.exe - 1 error(s), 0 warning(s)

    这就是我苦苦找了一整天得到的结论,用打开工程文件.dsp的方法是正确的!你可以试试!用我上面的方法,创建一个MFC单文档的工程,备份一下,然后用Test.dsp和Test.cpp分别打开进行组建(F7)和执行(Ctrl+F5),看一看是什么结果!再一次表示万分感谢!
      

  5.   

    哦!应该是.dsw项目工程文件Project Workspace
      

  6.   

    鱼C论坛上的rover12421大侠回贴:
    Test.dsp 是项目文件,dsw是工作区文件,dsw下是又多个dsp组成的。
    一个依赖性很强的项目,只能通过打开dsp或dsw文件来自动载入所以文件和加载配置
    MFC本来就是一个框架,你打开其中一个c文件当然是不能编译的,他不知道你MFC在哪,同包含的头文件,他以为你的类都是实现的,方法都是实现的,但是一旦编译,你的配置信息不全,他找不到你在那实现的,不报错才怪了!而且vc只编译添加到配置的文件,比如你有头文件a.h,源文件,a.cpp,你在mian.cpp中包含了a.h,调用了a.h中的函数。你把a.h,a.cpp都添加到工程里,编译不会出错,但是如果你把a.cpp从项目中移除,不是删除文件,这时你编译就会出来LNK2001错误,找不到现实。
    谢谢rover12421大侠的帮助和指点!您不仅指明了我的错误,而且说明了我为什么错,确实难能可贵,希望今后能得到大侠的指点!
    我是VC++初学者,看孙鑫老师的视频教程,也没有看VC++方面的书,出现这个错误提示后,我在网上搜索没有找到适合的解答。用Test.dsp 项目文件打开是我慢慢琢磨的,后来看了一个『Visual C++范例开发大全』上的实例,才恍然大悟,其实就应该用dsw工作区文件打开,我真是孤陋寡闻。今天看见您的回贴,更使我明白了我为什么出错,再次感谢大侠指点迷津!鱼C论坛上有高手,不仅水平高,而且肯帮助新手,是一个不错的论坛!