为什么会编译出错?

jonslover 2004-06-28 03:14:44
下面这段程序为什么会编译出错啊?
#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;

}
...全文
78 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weakwater 2004-06-28
  • 打赏
  • 举报
回复
choose "output" after "category "
weakwater 2004-06-28
  • 打赏
  • 举报
回复
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’.
jonslover 2004-06-28
  • 打赏
  • 举报
回复
下面这段程序为什么会编译出错啊?
#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.

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧