请教高手们:extern "C" void WinMainCRTStartup()函数中不能使用assert函数

BlueStar1997 2008-12-02 11:00:38
#define STRICT
#define WIN32_LEAN_AND_MEAN

#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, _tcslen(szMessage));

SelectObject(hDC, hOld);
DeleteObject(hFont);
}
const TCHAR szMessage[] = _T("Hello, World");
const TCHAR szFace[] = _T("Times New Roman");

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


extern "C" void WinMainCRTStartup()
{
HDC hDC = GetDC( NULL );
//assert( hDC );

CenterText( hDC,GetSystemMetrics(SM_CXSCREEN) / 2,
GetSystemMetrics(SM_CYSCREEN) / 2,
szFace,szMessage,72);


ReleaseDC( NULL,hDC );
ExitProcess(0);

}

函数如上:把assert()屏蔽后,编译运行正常,但是如果放开assert()则链接不通过,请问这是为什么?这是windows图形编程中的一个例子。
还请高手详细解释解释。万分感谢
...全文
109 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sys0006 2008-12-03
[Quote=引用 5 楼 BlueStar1997 的回复:]
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/P22.exe : fatal error LNK1120: 1 unresolved externals

VC6环境下
[/Quote]

看下你的工程设置是win32 application还是console?

回复
Zark 2008-12-03
你更改了程序入口函数了吗?
回复
BlueStar1997 2008-12-03
睡觉了,明天回帖,谢谢sys0006
回复
BlueStar1997 2008-12-03
工程设置的是windows
程序入口点没有调,但我好像吧project option中的编译连接内容按例程copy了一下.

早上起晚了,西三旗打车到体大20元不拉,接着挤公交
回复
Zark 2008-12-03
贴"project option中的编译连接内容"
回复
BlueStar1997 2008-12-02
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/P22.exe : fatal error LNK1120: 1 unresolved externals

VC6环境下
回复
BlueStar1997 2008-12-02
马上
回复
sys0006 2008-12-02
贴下错误看看
回复
BlueStar1997 2008-12-02
不可以啊,你可以把上面的代码COPY进工程中试试。
回复
healer_kx 2008-12-02
assert可以用啊,你要包含头文件了。
#include <cassert>
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-12-02 11:00
社区公告

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