求助:编译一个最最简单的MFC程序为什么老是有这四个报错?编译器用是VC6.0
编译那种最简单的HELLO MFC的程序(只是把CWinApp,和CFrameWnd简单的继承了一下的那种程序)如果我用源程序提供的DSW直接打开,编译执行很顺利;可是如果我删掉源程序的DSW等编译结果,直接打开.CPP和.h执行,编译器就会报这四个错:Linking...
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/Hello.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.Hello.exe - 4 error(s), 0 warning(s)是不是建立一个MFC程序和普通的cpp程序有什么区别呢?
新手很菜,求高手帮忙,不胜感激。

解决方案 »

  1.   

    dsw是workspace文件,不应该删掉.
      

  2.   

    请问楼上,dsw是编译出来的啊?重新编译为啥不能删呢?
      

  3.   

    这是因为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版本: 调试阶段使用 
      

  4.   

    感谢楼上几位。我把use run-time labrary设置成了Debug Multithreaded,前两个问题没有了;后两个问题还在,继续求教高手中:
    Linking...
    msvcrtd.lib(crtexe.obj) : error LNK2001: unresolved external symbol _main
    Debug/Hello.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.Hello.exe - 2 error(s), 0 warning(s)
      

  5.   

    开始选择创建工程的时候,选择 win32控制台程序
      

  6.   

    Link 选项中加参数/subsystem:windows
      

  7.   

    每个cpp文件都是独立编译的,但都是需要链接cpp外的一些资源,你在这些cpp文件中看一下,没有一个是带mian或者是winmain函数的.C++ 中有要求没有主函数的文件是不能编译的.因为mian 是主线程函数.
    你把一些文件del后,就当然会报那些提示错误.
      

  8.   

    可是如果我使用APP WIZARD的华,系统就会自动的给我继承4个类吧,如果我只希望继承CWINAPP和CFRAMEWND,那我改从哪开始我的程序比较好?
      

  9.   

    Project-->Settings-->Use MFC as dynamic DLL或在头文件加上: #include <afxmt.h>
      

  10.   

    "工程建错了.兄弟.
    你可以单击Project Setting->link
    在最下面的编译框中把/SUBSYSTEM:CONSOLE改成/SUBSYSTEM:WINDOWS
    或者干脆就把/SUBSYSTEM:CONSOLE删除."