下面这段程序为什么会编译出错啊?
#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
//#include "MtVerify.h"
//#include <assert.h>
//DWORD ThreadFunc(LPVOID);
DWORD WINAPI ThreadFunc(LPVOID n)
{
int i;
int inside=0;
double val;srand((unsigned)time(NULL));for(i=0;i<1000000;i++)
{
double x=(double)(rand())/RAND_MAX;
double y=(double)(rand())/RAND_MAX;if((x*x+y*y)<=1.0)
  inside++;}
val=(double)inside / i ;
printf("PI=%.4g\n",val*4);return 0;}
int main(void)
{
HANDLE hThrd;
DWORD exitcode=0;
DWORD threadId;
DWORD begin;
DWORD elapsed;puts("Timing normal function call...");
begin=GetTickCount();
ThreadFunc(0);
elapsed=GetTickCount()-begin;
printf("function call took: %d.%.03d seconds\n\n",
   elapsed/1000,elapsed%1000);
puts("Time thread+ busy loop...");
begin=GetTickCount();
hThrd=CreateThread(NULL,0,ThreadFunc,(LPVOID)1,0,&threadId);for(;;)
{
GetExitCodeThread(hThrd,&exitcode);
if(exitcode!=STILL_ACTIVE)
 break;
//this chews up lots of cpu times
}elapsed=GetTickCount()-begin;
printf("Thread + busy loop took: %d.%.03d seconds\n",
   elapsed/1000,elapsed%1000);
CloseHandle(hThrd);return EXIT_SUCCESS;}

解决方案 »

  1.   

    下面这段程序为什么会编译出错啊?
    #define WIN32_LEAN_AND_MEAN
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <time.h>
    //#include "MtVerify.h"
    //#include <assert.h>
    //DWORD ThreadFunc(LPVOID);
    DWORD WINAPI ThreadFunc(LPVOID n)
    {
    int i;
    int inside=0;
    double val;srand((unsigned)time(NULL));for(i=0;i<1000000;i++)
    {
    double x=(double)(rand())/RAND_MAX;
    double y=(double)(rand())/RAND_MAX;if((x*x+y*y)<=1.0)
      inside++;}
    val=(double)inside / i ;
    printf("PI=%.4g\n",val*4);return 0;}
    int main(void)
    {
    HANDLE hThrd;
    DWORD exitcode=0;
    DWORD threadId;
    DWORD begin;
    DWORD elapsed;puts("Timing normal function call...");
    begin=GetTickCount();
    ThreadFunc(0);
    elapsed=GetTickCount()-begin;
    printf("function call took: %d.%.03d seconds\n\n",
       elapsed/1000,elapsed%1000);
    puts("Time thread+ busy loop...");
    begin=GetTickCount();
    hThrd=CreateThread(NULL,0,ThreadFunc,(LPVOID)1,0,&threadId);for(;;)
    {
    GetExitCodeThread(hThrd,&exitcode);
    if(exitcode!=STILL_ACTIVE)
     break;
    //this chews up lots of cpu times
    }elapsed=GetTickCount()-begin;
    printf("Thread + busy loop took: %d.%.03d seconds\n",
       elapsed/1000,elapsed%1000);
    CloseHandle(hThrd);return EXIT_SUCCESS;}出错提示如下:
    Linking...
    LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
    Debug/1.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
      

  2.   

    The linker is looking for the entry point for a console application, but the application is being compiled and linked as a windows application (i.e. not a console application).This error has been observed after changing the project settings from using MBCS to UNICODE characters.Resolved:Under the project settings, under the ‘Link’ tab, category ‘output’, set the ‘Entry-point symbol’ to ‘wWinMainCRTStartup’.
      

  3.   

    choose "output" after "category "