一个从《VC++6.0技术内幕》上抄的简单程序,
编译通过,链接出现如下故障:Deleting intermediate files and output files for project 'Cpp1 - Win32 Debug'.
--------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
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/Cpp1.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.Cpp1.exe - 4 error(s), 0 warning(s)是否是我配置或者VC安装有问题呢?该如何解决?希望各位大侠不吝赐教。

解决方案 »

  1.   

    你只有一个CPP1好象不够, 是不是还有其它文件?
      

  2.   

    你建的是什么工程,是MFCEXE吗,我觉得好象是Win32吧,把问题说清楚
      

  3.   

    哦,我的程序目录里两个文件:
    文件一:h1.h
    class CMyApp:public CWinApp
    {
    public:
    virtual BOOL InitInstance();
    };class CMyFrame:public CFrameWnd
    {
    public:
    CMyFrame();
    protected:
    afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    afx_msg void OnPaint();
    DECLARE_MESSAGE_MAP()
    };
    文件二:cpp1.cpp#include <afxwin.h>
    #include "h1.h"CMyApp theApp;BOOL CMyApp::InitInstance()
    {
    m_pMainWnd = new CMyFrame();
    m_pMainWnd->ShowWindow(m_nCmdShow);
    m_pMainWnd->UpdateWindow();
    return TRUE;
    }BEGIN_MESSAGE_MAP(CMyFrame, CFrameWnd)
    ON_WM_LBUTTONDOWN()
    ON_WM_PAINT()
    END_MESSAGE_MAP()CMyFrame::CMyFrame()
    {
    Create(NULL, "MYAPP Application");
    }void CMyFrame::OnLButtonDown(UINT nFlags, CPoint point)
    {
    TRACE("Entering CMyFrame::OnLButtonDown - %lx, %d, %d\n",
    (long)nFlags, point.x, point.y);
    }void CMyFrame::OnPaint()
    {
    CPaintDC dc(this);
    dc.TextOut(0, 0, "hello, world!");
    }
    就是来源于vc技术内幕的最初的一个hello world程序啊。
      

  4.   

    不好意思,再问一下,你是用MFC向导建的工程吗
      

  5.   

    不是,我是先抄的文件
    然后编译时它提示了建workspace和project,
    我默认了就过去了。
      

  6.   

    Linking code compiled with /MT with the library LIBC.LIB causes LNK2001 on _beginthread, _beginthreadex, _endthread, and _endthreadex. Error LNK1120 gives you a count (number) of unresolved externals for this link.用libc.lib库,连接选项MT,引发lnk2001错误与 MSVCRT.LIB 链接就可以了
      

  7.   

    菜单上选Project->Settings...->选择tab "link",CateGory里选"General",
    在下面的"Project Options"里加上 /MT,注意/MT 前面有个空格。ok,Rebuild
      

  8.   

    编译选项对比如下
     /ML  LIBC.LIB //或将/MT改为/ML
     /MLd  LIBCD.LIB 
     /MT  LIBCMT.LIB //改为这个库
     /MTd  LIBCMTD.LIB 
     /MD  MSVCRT.LIB 
     /MDd  MSVCRTD.LIB 
      

  9.   

    好像是使用了动态链接库又没有加入*.LIB文件或者*.H文件所致?
    应该从外部库函数入手。
      

  10.   

    to puyinghua(不尔) :
       在Project->Settings...->选择tab "link“,在project options中每加一个你所说的lib库的库名,就会出现更多的类似链接错误。×××符号未定义。to  cxiaobao(风子)
        按你的做了,他报告
    LINK : warning LNK4044: unrecognized option "MT"; ignored
        4个错误还是存在。搞糊涂了……晕倒……
      

  11.   

    菜单porject->Settings...,在project settings对话框中的link页中,在最下面的project options框中把/subsystem:console改为/subsystem:windows,或干脆删掉此项。这是目标平台错误引起的。
      

  12.   

    to  ruihuahan(飞不起来的笨鸟) :
       多谢,用你方法,终于可以减少一个错误了,不容易啊
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
    Debug/myapp.exe : fatal error LNK1120: 2 unresolved externals
    Error executing link.exe.不会吧,这个问题有这么难吗?这么难以解决???
    各位大侠帮忙啊!!!
    谢谢
      

  13.   

    我觉得你在工程里面设置一下把那些LIB加进去就可以
      

  14.   

    用AppWizard生成一个新的工程,将你该加的加,就可以了。
    如果你想研究AppWizard生成的东东的功能,慢慢自己删,看看会出什么问题。
      

  15.   

    好像是你新建的项目类型不对把?是MFC的还是Win32的呢?你换个类型试试。
      

  16.   

    七七的办法未尝不可
    可是这个问题有这么难吗?
    我只是想在vc下编译一个C++的基本程序罢了
    就会这么复杂??
      

  17.   

    你在MSDN里面索引中输入 _beginthreadex 看看就知到了。
      

  18.   

    在msdn中:
    LibrariesLIBCMT.LIB Multithread static library, retail version 
    MSVCRT.LIB Import library for MSVCRT.DLL, retail version To use _beginthread or _beginthreadex, the application must link with one of the multithreaded C run-time libraries.我已经添加了头文件:process.h
    然后包含libcmt.lib、msvcrt.lib,怎么都不行(在编译选项中添加)?
    他会提示很多东西已经重复定义,这是不是说默认已经包含了呢?还有,可以建立一个空白的win32 project,怎么建立一个空白的mfc项目以便于我把当前的这个cpp程序和h文件加进去呢?我现在用的是win32 project,就是不通过,还是那两个错误。
    怎么回事??
    焦头烂额中………………
      

  19.   

    包含‘头文件’我是不知你是如何做的;但你说你是用拷贝方式建立的这是一错,应该用向导建立文件
    我对你具体做法也不太清楚,我说一下用拷贝的方式常见的Link eeror:
    一般是在debug的时候;用拷贝的方式会改变它原有的编译器,你只要把debug设置回去;具体设置你可以从工具栏可找
    如:Configuration: Cpp1 - Win32 Debug 变成
    Configuration: travsation - Win32 Debug 等等...........
      

  20.   

    我告诉你。是由于WIN32没有使用MFC的库。
    所以在你的工程中
    project/setting/microsoft foundation classes
    选中 using mfc in a static  library就ok了。