﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-单链DNA-随笔分类-好文章共分享</title><link>http://www.cppblog.com/Geek/category/12673.html</link><description>       /*c/c++ 算法 网络 游戏编程*/ 
&lt;p&gt;&lt;marquee&gt;coding无难事 只怕有心人&lt;/marquee&gt;&lt;/P&gt;</description><language>zh-cn</language><lastBuildDate>Sat, 02 Oct 2010 19:34:28 GMT</lastBuildDate><pubDate>Sat, 02 Oct 2010 19:34:28 GMT</pubDate><ttl>60</ttl><item><title>[转]写给计算机软件专业的大学生</title><link>http://www.cppblog.com/Geek/archive/2010/10/01/128228.html</link><dc:creator>Geek.tan</dc:creator><author>Geek.tan</author><pubDate>Fri, 01 Oct 2010 14:28:00 GMT</pubDate><guid>http://www.cppblog.com/Geek/archive/2010/10/01/128228.html</guid><wfw:comment>http://www.cppblog.com/Geek/comments/128228.html</wfw:comment><comments>http://www.cppblog.com/Geek/archive/2010/10/01/128228.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Geek/comments/commentRss/128228.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Geek/services/trackbacks/128228.html</trackback:ping><description><![CDATA[<h1 class="b">
<span id="subject_tpc">[转]写给计算机软件专业的大学生</span>
</h1>
<div class="tpc_content">
<div class="f14" id="read_tpc">&nbsp;&nbsp;&nbsp;
首先说一说进入计算机专业的目的，我个人是因为十分喜欢IT业，很喜欢折腾电脑，所以在填报志愿是毫不犹豫的在报了的所有的学校都填写的计算机专业，梦想
着进入计算机专业后能遇见很多高手，能交到几个知己，谁之进来后却大失所望。计算机专业的学生有很多以前对计算机不怎么了解，而且还有部分人进大学前连计
算机摸都没摸过，对计算机很熟悉的很少，高手更是凤毛麟角，大多数人是服从了父母之命，显而易见，目前社会最热的行业是IT业，工资最高的也是IT业，抱
着这个因素，大多数考生的父母都让自己的孩子进入了计算机专业，而大多数学生也天真的认为从计算机专业毕业后就能够像电视里演的大多数白领一样每天只用坐
在办公室里和同事们聊聊天，和老板吃吃饭，每天签几个字然后就有高工资等着你去拿。<br>  <br>
进校后他们发现其实他们在专业课方面什么都听不懂，自己也一点兴趣都没有，没有兴趣那就没有学习的动力，而且这个专业是要靠悟性的，而兴趣是培养悟性的第
一步，然后他们会发现越往后学专业课越难，也越听不懂，好一点的就会狠下心来，硬着头皮苦学一通，有可能也就能走出一片路来，而不好的就会就此放弃，只需
要混着考试通过，混毕业，找个单位安心上班。有些人上了几年学连自己上哪些课都不知道；拿个程序他分不清是用C语言写的还是用PASCAL写的；不小心进
了DOS不知道怎么再回到WINDOWS。但说起游戏来头头是道，好像每个都是职业玩家一样，有的每天只知道泡在网吧。这就是中国计算机人才下一代的悲
哀！<br><br><br>&nbsp;&nbsp;&nbsp;
再说现在计算机专业大学生的学习和生活。大多数计算机专业的学生对本专业的发展及前景一无所知，每天都是看小说、玩游戏、看电影、打牌、喝酒、睡觉等等很
有"前途"的事情。偶尔看见一两个同学看看与计算机专业有关的书，跑去拿来一看，全是什么"游戏攻略"、"黑客秘技"等此类书籍。还有的人连C语言和
C++谁是谁都还没搞清楚，就拿本VC的书"刻苦钻研"，真不知他们看懂了没有。好多学生都买了电脑，但用处都是游戏机＋碟机＋音响，每天都在用电脑玩着
各种流行的游戏、看着最新的大片、听着时尚的音乐，就是不用电脑学习。有的学生甚至问我电脑除了玩游戏还能干什么，我问他你为什么这么问，他告诉我他觉得
电脑只能用来玩游戏，不知道还能不能干干别的什么。据我了解，近几年在国内好几所高校的计算机专业的毕业生的毕业设计竟然是做网页，在大学了四年，学完了
《数据就构》、《软件工程》、《C语言》等专业课后，竟然交了一个没有学过计算机的人自学一两天就能做好的东西！<br><br>  这就是大多数计算机专业的学生，在我在大学玩了两年之后，我突然明白该为自己的未来打算打算了，但还有许多人仍然还什么都不明白，所以就有了这篇文章。<br><br><br>&nbsp;&nbsp;  如果你是以上我说的那种受父母之命来学计算机的学生，如果你看了《计算机应用文摘》第15期的《写给想当程序员的朋友》一文后，发现自己没有当程序员的欲望，那么我这里有几条路给你选择：<br>  1、学习网页制作，将来去网站工作！<br>  2、学习3D MAX等软件，去作动画！<br>  3、学习美术设计！<br>  4、学习网络，将来考个CCNA，去专业组网！<br>  5、在保证能顺利毕业的前提下，去疯狂玩游戏，做个职业玩家或做一个或几个网络游戏的GM。（我身边就有这样的人）<br>  6、以上五条都与计算机有关，要有一定的专业知识，但比起你的专业课简单多了。如果你看到这里还不觉得有适合你干的，那这条最适合你：在你们学校去修双学位，修一个自己感兴趣的专业，计算机真的不适合你！<br>  如果以上几条有适合你的，那么你就努力去做适合你的那一片天地，去看杂志的下一篇文章，下面的文字你看了只会浪费你的时间。 &nbsp; <br><br><br>如果你是计算机专业的在校大学生，而且想当程序员，那么请往下看：<br>  1、大学生活丰富多彩，会令你一生都难忘，但难忘有很多种，你可以学了很多东西而难忘，也会因为什么都没学到而难忘！<br>  2、计算机专业是一个很枯燥的专业，但即来之、则安之，只要你努力学，也会发现其中的乐趣的。<br>  3、记住：万丈高楼平地起！基础很重要，尤其是专业基础课，只有打好基础才能学得更深。<br>  4、C语言是基础，很重要，如果你不学好C语言，那么什么高级语言你都学不好。<br>  5、C语言与C++语言是两回事。就象大熊猫和小熊猫一样，只是名字很像！<br>  6、请先学习专业课《数据结构》、《计算机组成原理》，不要刚开始就拿着一本VC在看，你连面向对象都搞不清楚，看VC没有任何用处。<br>  7、对编程有一定的认识后，就可以学习C++了。（是C++而不是VC,这两个也是两码事!C++是一门语言，而VC教程则是讲解如何使用MFC类库，学习VC应建立在充分了解C++的基础之上。看VC的书，是学不了C++语言的。）<br>  8、学习编程的秘诀是：编程，编程，再编程；<br>  9、认真学习每一门专业课,那是你的吃饭碗。<br>  10、在学校的实验室就算你做错一万次程序都不会有人骂你，如果你在公司你试试看！所以多去实验室上机，现在错的多了，毕业后就错的少了。<br>  11、从现在开始，在写程序时就要养成良好的习惯。<br>  12、不要漏掉书中任何一个练习题--请全部做完并记录下解题思路。<br>  13、你会买好多参考书，那么请把书上的程序例子亲手输入到电脑上实践，即使配套光盘中有源代码。<br>  14、VC、C#、.NET这些东西都会过时，不会过时的是数据结构和优秀的算法！<br>  15、记住：书到用时方恨少。不要让这种事发生在你身上，在学校你有充足的时间和条件读书，多读书，如果有条件多读原版书，你要知道，当一个翻译者翻译一本书时，他会不知不觉把他的理念写进书中，那本书就会变得像鸡肋！ <br>  16、我还是强调认真听专业课，因为有些课像《数据结构》、《编译原理》、《操作系统》等等，这种课老师讲一分钟能让你明白的内容，你自己看要看好几个月，有的甚至看了好几年都看不明白。<br>  17、抓住在学校里的各种实践的机会，要为自己积累经验，就业时经验比什么都有用。<br>  18、多去图书馆，每个学校的图书馆都有很多好书等你去看！<br>  19、编程不是技术活，而是体力活。<br>  20、如果你决定了要当一个好的程序员，那么请你放弃游戏，除非你是那种每天只要玩游戏就能写出好程序的天才！<br>  21、你要有足够的韧性和毅力！有个高手出了一道题测试你的韧性和毅力：找个10000以内的素数表，把它们全都抄下来，然后再检查三遍，如果能够不间断地完成这一工作，你就可以满足这一条。<br>  22、找到只属于你自己的学习方法！不要盲目的追随别人的方法，适合自己的才是最好的！<br>  23、请热爱程序员这项工作！<br>  以上的话有些是我的经验，有些是我从高手那里直接COPY来的，但他们都很有用，记住他们，并遵守他们，那你们一定会成功！ <br><br>
对于大多数初学者来说，好多人有这种问题存在：我到底先学什么？学C/C++？还是学VC？还是学Borland C++
Builder呢？还是Delphi？哪一个更好呢？学习程序设计和学习程序设计语言究竟是怎么一个关系？初学者究竟应该如何取舍呢？就这些问题，我从一
个高手那里看了一下的这段话，可以帮助在这方面有问题的人：学习程序设计就好比学习射击，而程序设计语言就对应射击中的气枪、手枪、步枪等各种枪械。学习
射击必须要选择一种枪械，不可能没有枪还能学好射击的，也不可能同时学会使用所有的枪械。但是，如果掌握一种枪械的射击，再学别的也就触类旁通了。因为在
熟悉一种枪械的同时，也学习了射击技术本身。再学其他的，自然事半功倍。学习程序设计也是一样，必然要从学习一门程序设计语言开始入手。在学会系统的编程
理念之后，用什么工具都一样！<br><br>
之所以写这篇文章呢是因为自己眼看身边那么多的同学一个个都"不务正业"，荒废了学业，心急如焚，自己也荒废了好几年，眼看微软的Windows从3.X
到现在的2003
Server，而中国的软件业还是在原地踏步，难道我们真要每年等微软给他的操作系统换一次名字，我们给他交一次钱吗？这么大的利润为什么不留给我们自
己，为什么不让别的国家给我们交钱呢？这是广大中国程序员的一个共同的梦，要实现这个梦的人是现在还在大学里的"准程序员"们，他们是中国软件明天的希
望！希望广大计算机业的大学生看到这篇文章后，睡觉的能醒来，玩游戏的能停下来，在网吧的能出来，一起拿起课本，坐在电脑前，用程序写出中国软件业明天的
辉煌！</div>
</div><img src ="http://www.cppblog.com/Geek/aggbug/128228.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Geek/" target="_blank">Geek.tan</a> 2010-10-01 22:28 <a href="http://www.cppblog.com/Geek/archive/2010/10/01/128228.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]树状数组</title><link>http://www.cppblog.com/Geek/archive/2010/09/10/126314.html</link><dc:creator>Geek.tan</dc:creator><author>Geek.tan</author><pubDate>Fri, 10 Sep 2010 06:15:00 GMT</pubDate><guid>http://www.cppblog.com/Geek/archive/2010/09/10/126314.html</guid><wfw:comment>http://www.cppblog.com/Geek/comments/126314.html</wfw:comment><comments>http://www.cppblog.com/Geek/archive/2010/09/10/126314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Geek/comments/commentRss/126314.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Geek/services/trackbacks/126314.html</trackback:ping><description><![CDATA[<p><strong>树状数组</strong> <p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 武钢三中&nbsp;&nbsp; 吴豪</strong> <p>【引言】 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在解题过程中，我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但是不难发现，如果我们修改了任意一个A[i],S[i]、S[i+1]...S[n]都会发生变化。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以说，每次修改A[i]后，调整前缀和S[]在最坏情况下会需要O(n)的时间。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当n非常大时，程序会运行得非常缓慢。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因此，这里我们引入“树状数组”，它的修改与求和都是O(logn)的，效率非常高。 <p>【理论】 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了对树状数组有个形 象的认识，我们先看下面这张图。 <p><a href="http://fqq11679.photo.hexun.com/46304845_d.html"><img border="0" alt="查看更多精彩图片" src="http://photo14.hexun.com/p/2008/0805/231524/b_25F1665EFE7011E2D2EF878AB4C18939.jpg"></a> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如图所示，红色矩形表示的数组C[]就是树状数组。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里，C[i]表示A[i-2^k+1]到A[i]的和，而k则是i在二进制时末尾0的个数， <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或者说是i用2的幂方和表示时的最小指数。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （ 当然，利用位运算，我们可以直接计算出2^k=i&amp;(i^(i-1)) ） <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同时，我们也不难发现，这个k就是该节点在树中的高度，因而这个树的高度不会超过logn。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所以,当我们修改A[i]的值时，可以从C[i]往根节点一路上溯，调整这条路上的所有C[]即可， <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个操作的复杂度在最坏情况下就是树的高度即O(logn)。&nbsp;&nbsp; <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外，对于求数列的前n项和，只需找到n以前的所有最大子树，把其根节点的C加起来即可。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不难发现，这些子树的数目是n在二进制时1的个数，或者说是把n展开成2的幂方和时的项数, <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因此，求和操作的复杂度也是O(logn)。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接着，我们考察这两种操作下标变化的规律： <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先看修改操作： <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 已知下标i，求其父节点的下标。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们可以考虑对树从逻辑上转化： <p><a href="http://fqq11679.photo.hexun.com/46305127_d.html"><img border="0" alt="查看更多精彩图片" src="http://photo14.hexun.com/p/2008/0805/231525/b_D394E00A5DDCCB42C41D983528C5FA50.jpg"></a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如图，我们将子树向右对称翻折，虚拟出一些空白结点（图中白色），将原树转化成完全二叉树。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有图可知，对于节点i，其父节点的下标与翻折出的空白节点下标相同。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因而父节点下标 p=i+2^k (2^k是i用2的幂方和展开式中的最小幂，即i为根节点子树的规模) <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 即 p = i + i&amp;(i^(i-1)) 。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接着对于求和操作： <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为每棵子树覆盖的范围都是2的幂，所以我们要求子树i的前一棵树，只需让i减去2的最小幂即可。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 即 p = i - i&amp;(i^(i-1)) 。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 至此，我们已经比较详细的分析了树状数组的复杂度和原理。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在最后，我们将给出一些树状数组的实现代码，希望读者能够仔细体会其中的细节。 <p>【代码】 <p>求最小幂2^k:  <p>int Lowbit(int t) <br>{ <br>&nbsp;&nbsp;&nbsp;&nbsp; return t &amp; ( t ^ ( t - 1 ) ); <br>}  <p>&nbsp;&nbsp; 求前n项和： <p>int Sum(int end) <br>{ <br>&nbsp;&nbsp;&nbsp;&nbsp; int sum = 0; <br>&nbsp;&nbsp;&nbsp;&nbsp; while(end &gt; 0) <br>&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum += in[end]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end -= Lowbit(end); <br>&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp; return sum; <br>}  <p>对某个元素进行加法操作：  <p>void plus(int pos , int num) <br>{ <br>&nbsp;&nbsp;&nbsp;&nbsp; while(pos &lt;= n) <br>&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in[pos] += num; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pos += Lowbit(pos); <br>&nbsp;&nbsp;&nbsp;&nbsp; } <br>}  <img src ="http://www.cppblog.com/Geek/aggbug/126314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Geek/" target="_blank">Geek.tan</a> 2010-09-10 14:15 <a href="http://www.cppblog.com/Geek/archive/2010/09/10/126314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main</title><link>http://www.cppblog.com/Geek/archive/2009/12/27/104162.html</link><dc:creator>Geek.tan</dc:creator><author>Geek.tan</author><pubDate>Sat, 26 Dec 2009 16:42:00 GMT</pubDate><guid>http://www.cppblog.com/Geek/archive/2009/12/27/104162.html</guid><wfw:comment>http://www.cppblog.com/Geek/comments/104162.html</wfw:comment><comments>http://www.cppblog.com/Geek/archive/2009/12/27/104162.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Geek/comments/commentRss/104162.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Geek/services/trackbacks/104162.html</trackback:ping><description><![CDATA[<p style="font-family: 微软雅黑;"><font size="3" color="#000080">Visual C++的一些常见的错误：</font></p>
<p style="font-family: 微软雅黑;"><font size="3" color="#000080">原文请见：<a href="http://hi.baidu.com/shaolove2009/blog/item/b4e1682fbd1e5b584fc22604.html">http://hi.baidu.com/shaolove2009/blog/item/b4e1682fbd1e5b584fc22604.html</a><br></font></p>
<p style="font-family: 微软雅黑;"><font size="3" color="#000080">LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main</font></p>
<p style="font-family: 微软雅黑;"><font size="3" color="#000080">解决方法:</font></p>
<p style="font-family: 微软雅黑;"><font size="3" color="#000080">控制台项目要使用windows子系统, 而不是console, 设置:<br>[Project] --&gt; [Settings] --&gt; 选择"Link"属性页,<br>在Project Options中将/subsystem:console改成/subsystem:windows.</font></p>
<p style="font-family: 微软雅黑;"><font size="3" color="#000080">解决方法方法恰恰相反的情况:</font></p>
<p style="font-family: 微软雅黑;"><font size="3" color="#000080">LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16</font></p>
<p style="font-family: 微软雅黑;"><br><font color="#000080"><font size="3">解决方法是：将project-settings-link的project options里的 /subsystem:windows<br>改成 /subsystem:console</font><font size="3"> </font></font></p>
<p style="font-family: 微软雅黑;"><font size="3" color="#000080">此类错误的原因在于:</font></p>
<p style="font-family: 微软雅黑;"><font size="3" color="#000080">在新建工程时要分清Win32 Application和Win32 Console Application.它们都是工作在32位Windows环境的程序.其中Win32 Application 就是普通的常见的窗口应用程序，它们都是所谓的GUI(Graphics User Interface图形用户接口.而Win32 Console Application（win32控制台应用程序）往往是像MS-DOS窗口（XP中叫命令提示符）的样子出现,或者叫CUI(Character User Interface字符用户接口)。 </font></p>
<div style="font-family: 微软雅黑;"><font size="3" color="#000080">因为Win32 Application的入口函数为WinMain<br>Win32 Console Application的入口函数是main</font></div>
<div style="font-family: 微软雅黑;"><font size="3" color="#000080">也就是说,如果你编写传统的C程序，必须建立Win32 Console程序，但VC里面默认的是Win32 Application，于是上面提及的链接错误就就经常出现了<br>而Win32 Application和Win32 Console的区别就在于VC里链接参数不同<br></font></div>
<p style="font-family: 微软雅黑;"><font size="3"><font color="#000080">我还搜到其他的类似的<strong> 几种error LNK2001错误:</strong> </font></font></p>
<p style="font-family: 微软雅黑;"><font size="3" color="#000080">1.libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main<br>Windows项目要使用Windows子系统, 而不是Console, 可以这样设置:<br>[Project] --&gt; [Settings] --&gt; 选择"Link"属性页,<br>在Project Options中将/subsystem:console改成/subsystem:windows </font></p>
<p style="font-family: 微软雅黑;"><font size="3" color="#000080">2.程序入口设置错误, 提示:<br>msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16<br>通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口:<br>[Project] --&gt; [Settings] --&gt; 选择"C/C++"属性页,<br>在Category中选择Output,<br>再在Entry-point symbol中填入wWinMainCRTStartup, 即可</font></p>
<p style="font-family: 微软雅黑;"><font size="4"><font color="#000080"><font size="3">3.线程运行时库设置错误, 提示:<br>nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex<br>nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex<br>这是因为MFC要使用多线程时库, 需要更改设置:<br>[Project] --&gt; [Settings] --&gt; 选择"C/C++"属性页,<br>在Category中选择Code Generation,<br>再在Use run-time library中选择Debug Multithreaded或者multithreaded<br>其中,<br>Single-Threaded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 单线程静态链接库(release版本)<br>Multithreaded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 多线程静态链接库(release版本)<br>multithreaded DLL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 多线程动态链接库(release版本)<br>Debug Single-Threaded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 单线程静态链接库(debug版本)<br>Debug Multithreaded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 多线程静态链接库(debug版本)<br>Debug Multithreaded DLL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 多线程动态链接库(debug版本)<br>单线程: 不需要多线程调用时, 多用在DOS环境下<br>多线程: 可以并发运行<br>静态库: 直接将库与程序Link, 可以脱离MFC库运行<br>动态库: 需要相应的DLL动态库, 程序才能运行<br>release版本: 正式发布时使用<br>debug版本: 调试阶段使用</font></font></font></p>
<br style="font-family: 微软雅黑;"><img src ="http://www.cppblog.com/Geek/aggbug/104162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Geek/" target="_blank">Geek.tan</a> 2009-12-27 00:42 <a href="http://www.cppblog.com/Geek/archive/2009/12/27/104162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>