为什么打开cpp文件之后就报错
--------------------Configuration: Draw - Win32 Debug--------------------
Linking...
Draw.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CDrawDoc::classCDrawDoc" (?classCDrawDoc@CDrawDoc@@2UCRuntimeClass@@B)
Draw.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CMainFrame::classCMainFrame" (?classCMainFrame@CMainFrame@@2UCRuntimeClass@@B)
Draw.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CDrawView::classCDrawView" (?classCDrawView@CDrawView@@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/Draw.exe : fatal error LNK1120: 6 unresolved externals
Error executing link.exe.Draw.exe - 7 error(s), 0 warning(s)

解决方案 »

  1.   

    在VC的“工具”->选项(option)->目录->显示目录选lib->然后加上你lib所在的目录就可以了
      

  2.   


    对,编译程序的编译过程为先编译再连接1、编译。这个过程生成的最终文件为.o文件,它每一个.c(.cpp不清楚,因此说C的,呵呵)文件会生成一个.o文件,在这个过程中的函数和变量只要声明就可以了,而不会去确定他们的地址。比如说你可以声明一个来自外部的函数extern int add(int a, int b);但并不写这个函数,编译过程是没有问题的。
    2、连接。这个过程生成的最终文件是可执行文件,这个时候会确定函数和变量的地址,因此,如果函数只有声明而没有函数体就会无法确定函数的地址,此时编译器就会报unresolved external symbol "public: static struct CRuntimeClass const CDrawDoc::classCDrawDoc" (?classCDrawDoc@CDrawDoc@@2UCRuntimeClass@@B)这类的错误
      

  3.   

    缺少相应的lib,另外一个可能性是楼主没有把cpp文件包含到工程里