随笔分类 -  10. 专题系列

1 2 下一页

根据学习的知识点,分成不同的专题
从零开始,学习windows编程(9)-- 字符编码以及国际化(1)
摘要:前言前面写的8篇文章,基本上将VC环境下命令行模式程序的入口,以及链接库的知识进行了介绍,基本可以告一段落了。至于kernel32.lib包括后面的user32.lib等,之后介绍win32应用程序(Win32 Application)的时候会介绍到,这里就不展开了。另外,忽然想到,这里写的程序都是win32程序,至于64位的程序,具体还没有开发过,也就不涉及了,以后如果业务上使用到的时候,再具体研究之后加上。这里新的话题就是字符编码以及国际化的问题。在写完这个话题之后,我们就将开始"Win32 Application"的旅程。从一个例子开始既然你在看这篇文章,那我就假定你 阅读全文

posted @ 2012-04-01 22:12 cnyao 阅读(2477) 评论(1) 推荐(3)

从零开始,学习windows编程(8)--自己动手,编译CRT
摘要:翻开对应VC中的lib目录,是可以看到CRT的lib文件的,我电脑上面路径是“d:\Program Files\Microsoft Visual Studio\VC98\Lib\”,大家可以自己找一下自己的路径。经过上面的文章,我们对它已经有了一定的了解,使用它当然没问题了。那作为程序员,是不是还想看看它是怎么生成的呢?这里,就是讲如何来生成一个CRT库。安装CRT源码既然题目是编译,那就需要源码。如果你翻开电脑中的路径,如我电脑中为“d:\Program Files\Microsoft Visual Studio\VC98\CRT\”,发现下面已经有一个SRC目录,并且里面有700多个文件和 阅读全文

posted @ 2011-06-24 22:17 cnyao 阅读(3747) 评论(3) 推荐(2)

从零开始,学习windows编程(7)--不使用CRT库的程序
摘要:从前面几篇,我们已经得到一些结论。程序是可以自定义入口的,但是如果在入口中使用了一些CRT相关的函数,而没有正确的进行初始化工作的话,即使编译不出问题,在运行时也会出现内存错误等问题的。那我们可以写出完全不用到CRT库的程序吗?当然可以,既然CRT库也是微软写的,甚至我们可以用另外一个CRT库来代替它。不过这个算是另外一个话题了。先看看不使用CRT库的hello world是啥样的吧。不使用C运行时库的测试代码#include <windows.h>DWORD StringLen(const char * str){ const char *eos = str; w... 阅读全文

posted @ 2011-06-23 20:00 cnyao 阅读(3185) 评论(3) 推荐(3)

从零开始,学习windows编程外篇(1)--分析lib文件
摘要:大家都知道,lib文件是很多obj文件合在一起得到的一个静态库文件。那某一个特定的lib文件,到底是由哪些obj文件组成的呢?有一个工具可以帮到你,它的名字叫做lib.exe。还是用LIBC.LIB来举例。我电脑上这个lib文件的位置是在“d:\Program Files\Microsoft Visual Studio\VC98\Lib\LIBC.LIB”,进入这个目录。所有的lib使用选项:d:\Program Files\Microsoft Visual Studio\VC98\Lib>lib /? Microsoft (R) Library Manager Version 6.00 阅读全文

posted @ 2011-06-21 16:14 cnyao 阅读(3424) 评论(4) 推荐(2)

从零开始,学习windows编程(6)--改换entry,link错误的简单分析
摘要:还是那个hello.c程序,我们将其小修改一下,来开始今天的话题。1 #include <stdio.h>2 3 int myentry()4 {5 printf("hello world");6 return0;7 }可以看到,我将原来main的位置换成了myentry,这会有什么结果发生呢?D:\test>cl /c hello.c Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86 Copyright (C) Microsoft Corp 1984-1 阅读全文

posted @ 2011-06-20 13:24 cnyao 阅读(3657) 评论(7) 推荐(1)

从零开始,学习windows编程(5)--修改入口不为mainCRTStartup
摘要:上次讲到,如果在VC的console程序中,入口不为mainCRTStartup,会出现什么后果?我们就先将入口设置为main函数。1 #include <stdio.h>2 3 int main()4 {5 printf("hello world\n");6 return0;7 }先通过GUI来设置一下,创建一个win32 console Application。代码还是差不多,打印字符串编译链接运行,当然没问题。修改入口,在”project”->”setting”出现的对话框中,Link选项中,在”Entry-point symbol”中输入main。 阅读全文

posted @ 2011-06-18 21:40 cnyao 阅读(2715) 评论(2) 推荐(0)

从零开始,学习windows编程(4)--从libc.lib开始
摘要:从上一篇文章中,大家已经了解到有C运行时库这个概念,这个不算是新东西,但是一般都隐藏在幕后,C/C++语言教学的时候不讲,windows/linux编程的时候似乎也不会专门讲到。不过它一般是我们C/C++编程中默认会使用的一个重要部分。回想想,我们随手打出的strcpy, memset, memcpy等等,不就是C运行时库所提供出来的东西吗?既然这样,就要好好研究一下这个东西了。前面已经说过,针对单线程/多线程,静态/动态链接,是否是debug版本,VC6的C运行时库提供了6个版本。具体可以看下面的截图。而其中每一个选择对应的LIB文件,在上一篇中已经有一个列表介绍了,这里就不重复写了。这里也 阅读全文

posted @ 2011-06-14 20:30 cnyao 阅读(3036) 评论(4) 推荐(3)

从零开始,学习windows编程(3)—hello.c的疑惑
摘要:上一篇,我们问了几个问题,这一篇就从hello.c的各个方面来研究研究,等到这一篇的结束来看这些疑惑有哪些是可以解答了的,当然还有一些可能要放到后面解决了……。既然要抽丝剥茧,就要从手头已有的线索出发,同时加上搜索到的知识,以及自己的思考,任何问题的解决都是通过这个路径(当然,老板除外,老板这种生物只需要发出指令,然后得到结果就OK了……)。我们现在有的,是一个hello.c文件,通过cl命令就可以生成目标hello.exe文件。那我们就可以研究一下cl这个东西。CL解释CL.EXE(或cl.exe,似乎windows的文件系统对于大小写是不敏感的),是何许人也呢?直接引用微软的说辞吧(htt 阅读全文

posted @ 2011-06-10 14:32 cnyao 阅读(3950) 评论(8) 推荐(7)

从零开始,重新学习windows编程(2)--环境准备,不用IDE编写程序
摘要:既然是求甚解,那就要脱离掉IDE,保证每个字符都是经过思考产生出来的,其实我们脱离掉IDE环境,更能够了解到每一步的执行是怎么样的,IDE到底在你选择项目、创建项目的时候为了做了哪些事情,还有一个好处就是,当你想写一个小的测试程序的时候,你就不用打开VC,而直接用文本编辑器编写好,直接在命令行中编译运行就可以看到结果了,节约了不少时间。下面,我们就来看看怎么做才可以脱离IDE工作。1. 在VC6安装好的前提下,win+R,输入cmd,在出现的命令行窗口中试下"nmake"命令,如果能执行该命令,那就可以进行下面的操作,否则需要按照步骤2中的操作设置环境变量。如果学习过jav 阅读全文

posted @ 2011-06-08 14:00 cnyao 阅读(3838) 评论(12) 推荐(1)

从零开始,重新学习windows编程(1)--开篇
摘要:考虑了很久,终于准备开始写这个文章,有可能会汇成一个系列,具体还是要看时间的安排,今年的事情很多,也比较的紧,不过通过具体的项目认识到自己的一些不足,在“补课”的过程中萌发了将研究的一些东西写出来的想法,希望大家批评指正。这篇文章属于基础类文章,也是对我知识的一个重新整理,以前都是写出程序来就完了,了解的东西也就是大概,凡事均为遇到问题解决问题,google、其他人的代码、MSDN、CSDN、cnblogs……轮着来,总是能够把问题解决掉的,不过长期下来,得到的都是知识片段,并不能形成一个系统的认识。于是决定,从我比较熟悉的VC,从零开始,把Windows的编程知识整理一下,至少能把一些知识的 阅读全文

posted @ 2011-06-07 12:41 cnyao 阅读(1486) 评论(5) 推荐(2)

windows核心编程代码编译
摘要:最近在看《windows核心编程》,其实以前也看过一些,但是最近遇到一些问题,发现自己还是忘光了(所以还是要常常用啊),所以准备重新仔细看一下,主要是线程,进程部分,有空可以写一点关于这个的文章上来,这是后话。今天这里提到的是关于其源码的编译问题。 阅读全文

posted @ 2009-11-27 21:21 cnyao 阅读(638) 评论(0) 推荐(0)

穷究链表(十四)
摘要:检查stl_list.h,侯捷注释版,可以在侯捷老师的官方网站上面下载得到,之后查看关于list的一部分。在L133,定义了list类 阅读全文

posted @ 2009-10-22 20:27 cnyao 阅读(317) 评论(0) 推荐(0)

穷究链表(十三)
摘要:前面完成了三个比较完整的链表程序。下面就是使用模板类来实现这个链表程序了。 阅读全文

posted @ 2009-10-22 19:33 cnyao 阅读(309) 评论(0) 推荐(0)

穷究链表(十二)
摘要:在实现模板之前,我们来实现一下嵌套类。 阅读全文

posted @ 2009-10-22 18:51 cnyao 阅读(269) 评论(0) 推荐(0)

穷究链表(十一)
摘要:前面我们已经实现了链表的C语言版本,并看了现实中的实现,现在来实现C++版本。C++的话,就有类,有构造函数,析构函数。但是这里实现链表不需要使用到继承,没有继承也就没有多态,只是封装。 列出参考书籍和网址: 参考《C++标准程序库》,由侯捷、孟岩翻译,在166页开始讲解list的部分。 侯捷的《STL源码分析》 阅读全文

posted @ 2009-10-21 22:53 cnyao 阅读(379) 评论(0) 推荐(0)

穷究链表(十)
摘要:今天来看看C实现的链表的经典,也就是linux内核中使用的链表形式。内核代码是在www.kernel.org/处下载的。这里选择了最新的源码包进行下载,为linux-2.6.31.1。其实链表作为最常用的数据结构,应该是变化不大的,虽然没有比较过,但是如果你下载2.4的内核代码,链表部分应该还是一样的。 阅读全文

posted @ 2009-10-20 20:16 cnyao 阅读(388) 评论(0) 推荐(0)

穷究链表(九)
摘要:到这里为止,所有C相关的实现暂时已经完成,里面的代码经过一些不完整的测试,如果有问题,非常感谢能够提供给我,我会尽快将其进行更新。 下面就是对C相关网络上找到的较为可靠的实现进行的分析 阅读全文

posted @ 2009-10-09 21:17 cnyao 阅读(231) 评论(0) 推荐(0)

穷究链表(八)
摘要:这一篇来实现反转链表,反转链表应该算是链表操作中比较麻烦一些的操作,也是面试中常常会被问到的。可以用递归和非递归的方式来进行解决,这里我们先使用非递归的方式,然后使用递归来做。 阅读全文

posted @ 2009-10-09 20:03 cnyao 阅读(319) 评论(0) 推荐(0)

穷究链表(七)
摘要:这篇会实现3个函数,包括删除一个节点,查找节点,以及合并两个链表。 阅读全文

posted @ 2009-10-08 21:38 cnyao 阅读(401) 评论(1) 推荐(1)

穷究链表(六)
摘要:这篇会开始进行链表函数的实现,这里先实现两个函数。 阅读全文

posted @ 2009-10-08 20:57 cnyao 阅读(348) 评论(1) 推荐(0)

1 2 下一页