在我看《MFC windows程序设计》这本书的时候,我按照书上的源代码,连第一个程序编译都没通过,请大家告诉我原因和方法,谢谢!

解决方案 »

  1.   

    我是用直接添加头文件和实现文件的方式做的, 报的错就是如下的:
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
    Debug/MFC1.exe : fatal error LNK1120: 2 unresolved externals
      

  2.   

    需要包含相应的头文件才行!做MFC必须包含"stdafx.h"
      

  3.   

    个人认为可能有两个原因导致出错,呵呵,仅是猜测而且~~~1 .你使用了其他的静态库文件中的函数,而系统在指定的路径(比如工程的目录下,system32目录下,
       还有设置的环境变量path...)又找不到该库文件。从而导致编译链接时出错.
       解决方法:
       在你的VC中,project,settings,选择link标签,在object/libary modules中,加入与出错函数有关的库文件再重新编译.2. 可能因为你用了多线程,在Project Setting -> C/C++ ->Category 选code genera 然后在 run time lib中选择多线程模式,看看现在编译行不行。
         呵呵,good luck!  
      

  4.   

    你调用了endthreadex,和beginthreadex这两个函数??
    那么有没有把相应的lib加入进去呢
      

  5.   

    我没有用附书光盘啊。我是自己手工敲进去的,我首先新建一个项目,然后在里面添加的头文件和实现文件,然后直接运行的啊。 
    就是说没有用到MFC的应用程序框架来辅助生成。
      

  6.   

    呵呵 是新建的工程(/项目)的类型不对。
    应该选择MFC appWizard(exe)
      

  7.   

    呵呵,建议先用AppWizard建一个MFC工程,做一个简单的经典的hello world程序吧
      

  8.   

    那我先建立一个MFC appWizard(exe)的时候,不是已经自动生成了住窗口吗? 那我如何去控制我需要自己生成的主窗口啊?》
      

  9.   

    那我先建立一个MFC appWizard(exe)的时候,不是已经自动生成了住窗口吗? 那我如何去控制我需要自己生成的主窗口啊?》=========================================================================================是已经自动生成窗口了呀.
    你所说的"控制我需要自己生成的主窗口",你所以需要的是什么样的主窗口?~~~~
      

  10.   

    我不知道大家有没有看过MFC windows 程序设计这本书,里面的代码都是先给出一个头文件,头文件里面包括一个CWinApp类的派生类,以及一个CFrameWnd的派生类,然后实现CWinApp的虚函数InitInstance,在这个里面他会去生成一个窗口,是通过调用CFrameWnd类的派生类的构造函数来实现的!所以我不知道让MFC appWizard(exe)自动生成的时候如何去组织代码,能够让他运行的时候没有问题。
      

  11.   

    这样吧
    你用MFC appWizard(exe)新建一个基于对话框的程序,
    然后在InitInstance里面把如下的代码注释掉
    换成你书本上的代码,然后再做吧
    然后系统生成的那个CxxDlg类你不用管它了,删掉也可以了,不删掉也可以,不去管它就可以了用这样的框架就可以了 CxxDlg dlg;
    m_pMainWnd = &dlg;
    int nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {
    // TODO: Place code here to handle when the dialog is
    //  dismissed with OK
    }
    else if (nResponse == IDCANCEL)
    {
    // TODO: Place code here to handle when the dialog is
    //  dismissed with Cancel
    }