您的位置:首页 > 其它

自己定义程序入口启示

2007-10-23 14:15 302 查看
今天在看Windows Graphics Programming Win32 GDI and DirectDraw®一书时,作者说为了使程序尽可能的小可以自己写启动函数,然后指定为入口点,将多个节合并,这样可以生成很小的程序,觉的比较的意思,所以就CP书中的SRC到VC下。结果报错。哎呀!汗呀。

在网上找了半天,也没有找到个解决的方法。只好自己试了。当我连接动态库时却不会出错,尝试连接各种库,报错只在连接静态调试库时才出错,对于非调试库不存在上面的问题。刚开始以为只于所建工程有关,结果在WIN32 CON/APP下有同样的错误说找不到main.
这个主要是程序中用到了C库函数_tcstrlen,如果不用C库应该就不会出错了吧。于是我将它换成了Windows的函数lstrlen,但是问题还是存在。不用C库函数还是有错。没有法只好禁止去连接LIBCD.lib结果报错,找不到__chkesp,这下才明白。调试版中要检查堆栈指针合法性是编译器自动加入了__chkesp,函数应该是在C库中。那只有连接动态库或非调版本库时才能解决这个问题了。但是最后还是没有明白。为什么静态调试库会报错,而动态库不会出错呢。请高人指点。

LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/REL.exe : fatal error LNK1120: 1 unresolved externals
下面是代码,我没有怎么改原来程序:(下面程序如果要调试版本也成功只有去连接动态库,加入
#pragma comment(lib, "msvcrtd.lib")就可以了..)


#pragma comment(linker, "-merge:.rdata=.text")


#pragma comment(linker, "-merge:.data=.text")


#pragma comment(linker, "-align:512")


#pragma comment(linker, "/subsystem:windows")


#pragma comment(linker, "/entry:KWinMainCRTStartup" )






#include <windows.h>


#include <tchar.h>


#include <assert.h>




void CenterText(HDC hDC, int x, int y, LPCTSTR szFace, LPCTSTR szMessage, int point)




...{


HFONT hFont = CreateFont(point * GetDeviceCaps(hDC, LOGPIXELSY) / 72,


0, 0, 0, FW_BOLD, TRUE, FALSE, FALSE,


ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS,


PROOF_QUALITY, VARIABLE_PITCH, szFace);


// assert(hFont);




HGDIOBJ hOld = SelectObject(hDC, hFont);




SetTextAlign(hDC, TA_CENTER | TA_BASELINE);




SetBkMode(hDC, TRANSPARENT);


SetTextColor(hDC, RGB(0, 0, 0xFF));


TextOut(hDC, x, y, szMessage, _tcstrlen(szMessage));




SelectObject(hDC, hOld);


DeleteObject(hFont);


}




const TCHAR szMessage[] = _T("Hello, World");


const TCHAR szFace[] = _T("Times New Roman");






void KWinMainCRTStartup()




...{


HDC hDC = GetDC(NULL);


// assert(hDC);




CenterText(hDC, GetSystemMetrics(SM_CXSCREEN) / 2,


GetSystemMetrics(SM_CYSCREEN) / 2,


szFace, szMessage, 72);




ReleaseDC(NULL, hDC);


ExitProcess(0);


}

    哎,不会写文章内...大家见量希望大家能发表下自己的看法....非常感谢;)......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐