论坛: 编程破解 标题: 请问这是什么错误啊? 复制本贴地址    
作者: ziaichen [ziaichen]    论坛用户   登录
我在利用windows编程做一 个内接五角星的正五边形的时候,总是编译 没错,而在联接 的时候有这样的错误:
    LIBCD。lib(crt0.obj):error  LNK2001: unresolved external symbol_main
    DEBUG/0.exe:  fatal error LNK1120:  1 unresovled externals
    ERROR  executing link.exe
我利用调试进行检查,但并没有发现错误, 请问这是怎么回事情啊?

地主 发表时间: 05-07-26 09:15

回复: 286 [unique]   版主   登录
源程序呢?



B1层 发表时间: 05-07-26 09:44

回复: bassjack [bassjack]   论坛用户   登录
把Turborc2的文件复制到C:\下再运行。

B2层 发表时间: 05-07-28 09:26

回复: ziaichen [ziaichen]   论坛用户   登录
不好意思,286大哥,最近比较忙,没有看见你的回帖
程序如下:
#include<windows.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define Pi 3.1415926
LRESULT WINAPI WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam);
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
HWND hWndMain;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrewInstance,LPSTR lpCmdLine,int nCmdShow)
{
MSG Message;
if(!InitWindowsClass(hInstance))
return FALSE;
if(!InitWindows(hInstance,nCmdShow))
return FALSE;
while(GetMessage(&Message,0,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
LRESULT WINAPI WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
HDC hDC;
HBRUSH hBrush;
HPEN hPen;
PAINTSTRUCT PtStr;
double dfRadious0=100.0,dfRadious1;
POINT lpOuterPoints[5],lpInnerPoints[5];
POINT lpTriangle[3];
dfRadious1=dfRadious0*sin(0.1*Pi)/sin(126.0/180*Pi);
for(int i=0;i<5;i++)
{
lpOuterPoints[i].x=(long)(dfRadious0*cos(i*72.0/180*Pi));
lpOuterPoints[i].y=(long)(dfRadious0*cos(i*72.0/180*Pi));
lpInnerPoints[i].x=(long)(dfRadious1*cos(i*72.0/180*Pi+36.0/180*Pi));
lpInnerPoints[i].y=(long)(dfRadious1*cos(i*72.0/180*Pi+36.0/180*Pi));
}
switch(iMessage)
{
case WM_PAINT:
hDC=BeginPaint(hWnd,&PtStr);
SetMapMode(hDC,MM_ANISOTROPIC);
SetWindowOrgEx(hDC,-100,-100,NULL);
hPen=CreatePen(PS_SOLID,1,RGB(255,0,0));
SelectObject(hDC,hPen);
Polygon(hDC,lpOuterPoints,5);
for(i=0;i<5;i++)
{
lpTriangle[0]=lpOuterPoints[i%5];
lpTriangle[1]=lpOuterPoints[i%5];
lpTriangle[2]=lpOuterPoints[(i+1)%5];
hBrush=CreateSolidBrush(RGB(i*10,i*20,i*30));
SelectObject(hDC,hBrush);
Polygon(hDC,lpTriangle,3);
lpTriangle[2]=lpInnerPoints[(i+4)%5];
hBrush=CreateSolidBrush(RGB(i*40,i*30,i*20));
SelectObject(hDC,hBrush);
Polygon(hDC,lpTriangle,3);
}
hBrush=CreateSolidBrush(RGB(255,255,255));
SelectObject(hDC,hBrush);
Polygon(hDC,lpInnerPoints,5);
MoveToEx(hDC,lpOuterPoints[0].x,lpOuterPoints[0].y,NULL);
for(i=1;i<=5;i++)
{
hPen=CreatePen(PS_SOLID,1,RGB(0,i*51,0));
SelectObject(hDC,hPen);
LineTo(hDC,lpOuterPoints[(i+2)%5].x,lpOuterPoints[(i+2)%5].y);
}
hPen=(HPEN)(GetStockObject(PS_NULL));
DeleteObject(hPen);
DeleteObject(hBrush);
EndPaint(hWnd,&PtStr);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
}
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
hWnd=CreateWindow("Polygon",
              "五边形",
  WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT,
  0,
  CW_USEDEFAULT,
  0,
  NULL,
  NULL,
  hInstance,
  NULL);
if(!hWnd)
return FALSE;
hWndMain=hWnd;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
BOOL InitWindowsClass(HINSTANCE hInstance)
{
WNDCLASS WndClass;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName="Polygon";
WndClass.lpszMenuName=NULL;
WndClass.style=0;
return RegisterClass(&WndClass);
}

B3层 发表时间: 05-08-04 08:25

回复: 286 [unique]   版主   登录
程序没错,但画的好象有问题,只画了一条线。

程序出错的原因是:你的程序是一个FOR win的程序,但你编译的模式是一个for dos的。
解决方案是:VC中先创建一个win application程序,然后再把源程序加进去。就可以通过了。


B4层 发表时间: 05-08-04 11:31

回复: ziaichen [ziaichen]   论坛用户   登录
谢谢286大哥,的确是一条直线,可是我看程序没有错误啊?

B5层 发表时间: 05-08-06 08:13

回复: 286 [unique]   版主   登录
for(int i=0;i<5;i++)
{
lpOuterPoints[i].x=(long)(dfRadious0*cos(i*72.0/180*Pi));
lpOuterPoints[i].y=(long)(dfRadious0*cos(i*72.0/180*Pi));
lpInnerPoints[i].x=(long)(dfRadious1*cos(i*72.0/180*Pi+36.0/180*Pi));
lpInnerPoints[i].y=(long)(dfRadious1*cos(i*72.0/180*Pi+36.0/180*Pi));
}

改成
for(int i=0;i<5;i++)
{
lpOuterPoints[i].x=(long)(dfRadious0*cos(i*72.0/180*Pi));
lpOuterPoints[i].y=(long)(dfRadious0*sin(i*72.0/180*Pi));
lpInnerPoints[i].x=(long)(dfRadious1*cos(i*72.0/180*Pi+36.0/180*Pi));
lpInnerPoints[i].y=(long)(dfRadious1*sin(i*72.0/180*Pi+36.0/180*Pi));
}

B6层 发表时间: 05-08-08 10:38

回复: ziaichen [ziaichen]   论坛用户   登录
哦,原来是这样的啊
谢谢286版主!

B7层 发表时间: 05-08-08 12:03

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号