我利用VC6.0编写C和C++语言程序还是成功的。但是编写MFC遇到麻烦,在编写一个画硬币程序时编译已经通过,连接时出现错误:
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/DrawcoinView.exe : fatal error LNK1120: 3 unresolved externals
执行 link.exe 时出错.DrawcoinView.exe - 1 error(s), 0 warning(s)
我从网上搜到答案
1:Windows子系统设置错误, 提示: o3y,zfM  
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main DJ;'^  
\jRT'RR  
Windows项目要使用Windows子系统, 而不是Console, 可以这样设置: bsm'W?(  
SPK{S*!"  
[Project] --> [Settings] --> 选择"Link"属性页, SMr`N6Bi-  
在Project Options中将/subsystem:console改成/subsystem:windows   {,$_K&_  
T^[;$y  
2. Console子系统设置错误, 提示: W.Xc^$e  
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main DJ;'^  
\jRT'RR  
Windows项目要使用Windows子系统, 而不是Console, 可以这样设置: bsm'W?(  
SPK{S*!"  
[Project] --> [Settings] --> 选择"Link"属性页, SMr`N6Bi-  
在Project Options中将/subsystem:console改成/subsystem:windows   {,$_K&_  
我用的中文版VC6。0,我觉得得工程选项[工程]——[设置]——[资源]中才有工程选项l 0x804 /d "_DEBUG"T^[;$y  
反正我不知道怎么弄,越弄越乱,结果原来编译连接成功的MFC程序现在连接也出了问题。比如一个My Diague程序非常简单连接时也出现错误
MyDialog.obj : error LNK2001: unresolved external symbol "public: __thiscall CMyDialogDlg::CMyDialogDlg(class CWnd *)" (??0CMyDialogDlg@@QAE@PAVCWnd@@@Z)
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/MyDialog.exe : fatal error LNK1120: 4 unresolved externals
执行 link.exe 时出错.MyDialog.exe - 1 error(s), 0 warning(s)
反正现在所有MFC程序连接时都出问题。我不知道知道怎么办。请大家指点。

解决方案 »

  1.   

    工程-〉设置-〉选择使用MFC静态库 试下   
      

  2.   

    出现endthreadex 和beginthreadex 是由于你没有使用MFC库,
    出现main是由于你使用了控制台。
      

  3.   

    出现endthreadex 和beginthreadex 是由于你没有使用MFC库,
    出现main是由于你使用了控制台。
      

  4.   

    可能是你动态库的头文件里面使用了extern c
    而,DLL里面没有用!
    你查查是不是!
      

  5.   

    楼主:使用MFC静态库试过了,不行,出现错误
    Drawcoin.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CDrawcoinDoc::classCDrawcoinDoc" (?classCDrawcoinDoc@CDrawcoinDoc@@2UCRuntimeClass@@B)
    Drawcoin.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CMainFrame::classCMainFrame" (?classCMainFrame@CMainFrame@@2UCRuntimeClass@@B)
    Drawcoin.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CDrawcoinView::classCDrawcoinView" (?classCDrawcoinView@CDrawcoinView@@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/Drawcoin.exe : fatal error LNK1120: 6 unresolved externals
    执行 link.exe 时出错.Drawcoin.exe - 1 error(s), 0 warning(s)
    我想了一个办法,要不要重装VC,如重装的话,原有好多程序是否全部抹掉.
      

  6.   

    1.检查是否包含头文件afx.h
    2.打开project->settings->general->microsoft foundation classes->
    选use MFC in a static library
    或选 use MFC in a shared DLL(需要把MFC的动态库放在system32文件夹下) .
      

  7.   

    楼主:如使用动态连接库出现DrawcoinView.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CDrawcoinDoc::classCDrawcoinDoc" (?classCDrawcoinDoc@CDrawcoinDoc@@2UCRuntimeClass@@B)
    msvcrtd.lib(crtexe.obj) : error LNK2001: unresolved external symbol _main
    Debug/DrawcoinView.exe : fatal error LNK1120: 2 unresolved externals
    执行 link.exe 时出错.DrawcoinView.exe - 1 error(s), 0 warning(s)
    stdafx头文件不能包含到工程中,工程好象没有动态库
      

  8.   

    楼主:如使用动态连接库出现DrawcoinView.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CDrawcoinDoc::classCDrawcoinDoc" (?classCDrawcoinDoc@CDrawcoinDoc@@2UCRuntimeClass@@B)
    msvcrtd.lib(crtexe.obj) : error LNK2001: unresolved external symbol _main
    Debug/DrawcoinView.exe : fatal error LNK1120: 2 unresolved externals
    执行 link.exe 时出错.DrawcoinView.exe - 1 error(s), 0 warning(s)
    stdafx头文件不能包含到工程中,工程好象没有动态库
      

  9.   

    我是在控制台下用AfxBeginThread来开启线程,先是出现了 errorLINK unresolved external symbol __endthreadex 
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex 后来试了下:
    2.打开project->settings->general->microsoft foundation classes-> 
    选use MFC in a static library 结果就成功了!以前在MFC中调用AfxBeginThread不用此操作,难倒AfxBeginThread只在MFC的库中?
      

  10.   


    正解,也即12楼说的多线程
    project
       settings
          c/c++页
             category->code generation  && use run-time library->Debug Multithreaded
      

  11.   

    你这是线程编程,VC需要设置一下才能支持线程编程。关于VC6.0中线程编程的设置,请参考这个网址下的【解决办法】。
    http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763104c8c711923d030678197027fa3c215cc7905061a27b8f07a7e4519839b21321cf40f0bb5ed3222320070e790ce8a1adebd94792c8c7135734c834314d80eafbc1c639e7e841fb4ef4fe8fea12592ded6c4de2444ca24127bf0f29c5b7003ba6ce76333f4d0995f622f07bb9d27148b4e015d885341a13688&p=917dcf129f904ea408e292745453&user=baidu -----------------------------------
    那里边说的很清楚啊,怎么会看不懂呢?你只要照着他说的设置就可以啊。
    就是下边这段内容以及加图的部分啊,图都给出来了,应该很好理解的哈。
    ***************************************************
    【解决办法】编译器设置步骤如下: 工程 → 属性 → C/C++ → 分类:Code Generation → Use run-time library debug下选择debug multithreadedrelease下选择multithreaded。注意红色标记的处的变化。
    *************************************************** 剩下的就是你工程的问题了,看你代码好像是要建立Windows应用程序,但是你没有对应的入口函数,类似main函数(应该叫WinMain,我记不清了)。这个我就帮不了你了,因为我不知道你是怎么建立的工程。
    来源http://zhidao.baidu.com/question/133922370.html