<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[legionmation的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/legionmation</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; legionmation]]></copyright><item><title><![CDATA[DLL Hell（DLL地狱）问题]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/39177911</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/39177911</guid><author>legionmation</author><pubDate>Wed, 10 Sep 2014 10:15:39 +0800</pubDate><description><![CDATA[DLL动态链接库是程序复用的重要方式，DLL可以导出函数，使函数被多个程序复用，DLL中的函数实现可以被修改而无需重新编译和连接使用该DLL的应用程序。作为一名面向对象的程序员，希望DLL可以导出类，以便在类的层次上实现复用。所幸的是，DLL确实也可以导出类。
然而事实却没这么简单，导出类的DLL在维护和修改时有很多地方必需很小心，增加成员变量、修改导出类的基类等操作都可能导致意想不到的后果，也]]></description><category></category></item><item><title><![CDATA[PeekMessage&GetMessage]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/39006571</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/39006571</guid><author>legionmation</author><pubDate>Tue, 02 Sep 2014 15:07:20 +0800</pubDate><description><![CDATA[PeekMessage与GetMessage的对比
相同点：
PeekMessage函数与GetMessage函数都用于查看应用程序消息队列，有消息时将队列中

的消息派发出去。

不同点：
无论应用程序消息队列是否有消息，PeekMessage函数都立即返回，程序得以继续执行

后面的语句（无消息则执行其它指令，有消息时一般要将消息派发出去，再执行其它

指令）。
Get]]></description><category></category></item><item><title><![CDATA[VC++自定义消息的发送与接收的方法实现]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/38984013</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/38984013</guid><author>legionmation</author><pubDate>Mon, 01 Sep 2014 19:11:46 +0800</pubDate><description><![CDATA[消息传递的方法一：使用ON_MESSAGE
使用ON_MESSAGE响应消息，必须配合定义消息#define WM_MY_MESSAGE (WM_USER+100)
对于发送消息者-MyMessageDlg，
在其MyMessageDlg.h中，定义#define WM_MY_MESSAGE (WM_USER+100)
在其MyMessageDlg.cpp中要先添加：＃i nclude "]]></description><category></category></item><item><title><![CDATA[通过GetModuleHandleEx 得到函数调用者所在的DLL/EXE]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/38983575</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/38983575</guid><author>legionmation</author><pubDate>Mon, 01 Sep 2014 18:10:09 +0800</pubDate><description><![CDATA[在有些情况下需要得到函数调用者的模块名字。比如你想限制你的某个函数只能被自己某个特定的DLL调用。 或者比如在异常处理中你想了解是那个DLL/EXE抛出了异常。

API函数_ReturnAddress 和GetModuleHandleEx 函数可以帮助我们达到这个目的。以下代码演示它们的用法：]]></description><category></category></item><item><title><![CDATA[mysql忘记root密码怎么办]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/38751861</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/38751861</guid><author>legionmation</author><pubDate>Fri, 22 Aug 2014 11:24:38 +0800</pubDate><description><![CDATA[版本：mysql5.7.3


1.运行cmd，qiehuanzhi]]></description><category></category></item><item><title><![CDATA[ffMPEG 手册]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/38403481</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/38403481</guid><author>legionmation</author><pubDate>Wed, 06 Aug 2014 16:47:08 +0800</pubDate><description><![CDATA[FFMpeg SDK 开发手册
FFMpeg 中比较重要的函数以及数据结构如下：
1. 数据结构：
(1) AVFormatContext
(2) AVOutputFormat
(3) AVInputFormat
(4) AVCodecContext
(5) AVCodec
(6) AVFrame
(7) AVPacket
(8) AVPicture
(9) AVStream]]></description><category></category></item><item><title><![CDATA[如何输出类的函数地址]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/38235645</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/38235645</guid><author>legionmation</author><pubDate>Mon, 28 Jul 2014 19:02:45 +0800</pubDate><description><![CDATA[首先我们定义一个类Ctest，类里面包含三个不同形式的成员函数，静态成员函数statFunc()、动态成员函数dynFunc()和虚拟函数virtFunc()。在main函数中我们利用cout标准输出流分别输出这三个函数的地址，程序如下所示：

#include 
#include 
using namespace std;

class Ctest
{
public:
 sta]]></description><category></category></item><item><title><![CDATA[__declspec(novtable)作用]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/38230019</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/38230019</guid><author>legionmation</author><pubDate>Mon, 28 Jul 2014 14:45:40 +0800</pubDate><description><![CDATA[__declspec(novtable) 在C++中接口中广泛应用. 不容易看到它是因为在很多地方它都被定义成为了宏. 比如说ATL活动模板库中的ATL_NO_VTABLE, 其实就是__declspec(novtable).
 __declspec(novtable) 就是让类不要有虚函数表以及对虚函数表的初始化代码, 这样可以节省运行时间和空间. 但是这个类一定不允许生成实例, 因为没有虚函]]></description><category></category></item><item><title><![CDATA[__declspec(selectany)的作用]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/38226449</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/38226449</guid><author>legionmation</author><pubDate>Mon, 28 Jul 2014 11:11:41 +0800</pubDate><description><![CDATA[最近在用 template 编写singleton模式代码的时候，遇到了一个问题，template要求实现要在同一个文件中，所以，我只能在h文件中定义并实现 singleton 模式类。类中必然要有静态成员变量，静态成员变量的定义成了问题，如果我放在cpp文件中，模板是不支持的，放在h文件中，如果h文件被多次包含，会出现重定义的情况。


    回来，请教高手，得知，可以在初始化静态成员变]]></description><category></category></item><item><title><![CDATA[WinDbg 常用命令]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/32328717</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/32328717</guid><author>legionmation</author><pubDate>Thu, 19 Jun 2014 15:04:12 +0800</pubDate><description><![CDATA[//断点相关

bp + 地址 设置断点
bl  显示已经设定的断点
bu + 地址 设置断点，但是这种类型断点再下一次启动时被记录
bc 清除断点
对于断点范围，可以用*匹配，-表示一个范围，表达多个可用,号隔开

程序入口伪寄存器
WinDbg里有个伪寄存器叫$exentry，里面记录了程序的入口点。所以我们只要在命令输入栏里输入
bp $exentry
（bp就是用来下]]></description><category></category></item><item><title><![CDATA[URI和URL的区别]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/31380515</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/31380515</guid><author>legionmation</author><pubDate>Mon, 16 Jun 2014 15:07:20 +0800</pubDate><description><![CDATA[这两天在写代码的时候，由于涉及到资源的位置，因此，需要在Java Bean中定义一些字段，用来表示资源的位置，比如：imgUrl，logoUri等等。但是，每次定义的时候，心里都很纠结，是该用imgUrl还是imgUri呢？

同样的，另外一个问题：String HttpServletRequest.getRequestURI()；和StringBuffer HttpServletReques]]></description><category></category></item><item><title><![CDATA[两个类相互包含引用的问题]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/30990523</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/30990523</guid><author>legionmation</author><pubDate>Sun, 15 Jun 2014 15:31:23 +0800</pubDate><description><![CDATA[在构造自己的类时，有可能会碰到两个类之间的相互引用问题，例如：定义了类A类B，A中使用了B定义的类型，B中也使用了A定义的类型
class A
{
    int i;
    B b;
}


class B
{
    int i;
    A* a;
}


请注意上面的定义内容，一般情况下是不能出现类A，类B相互引用都定义对象，即如下的样子：
class A]]></description><category></category></item><item><title><![CDATA[类里面定义一个指向自己的静态成员指针变量]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/30982205</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/30982205</guid><author>legionmation</author><pubDate>Sun, 15 Jun 2014 13:41:23 +0800</pubDate><description><![CDATA[class a
{
 public:
        void  printa() { cout
 public:
       static a* my;
}]]></description><category></category></item><item><title><![CDATA[c++虚函数解析]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/30256695</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/30256695</guid><author>legionmation</author><pubDate>Thu, 12 Jun 2014 16:13:20 +0800</pubDate><description><![CDATA[C++的多态性用一句话概括就是：在基类的函数前加上virtual关键字，在派生类中重写该函数，运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类，就调用派生类的函数；如果对象类型是基类，就调用基类的函数
1. 用virtual关键字申明的函数叫做虚函数，虚函数肯定是类的成员函数。
2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类]]></description><category></category></item><item><title><![CDATA[CRT堆]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/29885069</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/29885069</guid><author>legionmation</author><pubDate>Tue, 10 Jun 2014 20:19:09 +0800</pubDate><description><![CDATA[CRT堆
N年前，在探讨C++对象创建及管理方法时，写了些代码，管理对象 (factory method、singleton、prototype)，发现了windows进程及dll退出时的一些行为及由此引起的问题，本文将问题列举并进行讨论，以下讨论都是以程序静态连接为前提，在本文的最后将会回过头来讨论这个大前提，并提出一些解决问题的方法。
CRT堆
首先CRT就是C RunTime的缩写，意]]></description><category></category></item><item><title><![CDATA[你所不知道的C和C++运行库]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/29883059</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/29883059</guid><author>legionmation</author><pubDate>Tue, 10 Jun 2014 20:07:59 +0800</pubDate><description><![CDATA[你所不知道的C和C++运行库

　　在使用VC构建项目时，经常会遇到下面的链接错误：






　　初学者面对这些错误常常不知所错：libcmt.lib是什么东西？msvcrtd.dll又是干吗用的？在使用VC++时我们也常常对下面的运行库配置项感到疑惑，它们到底究竟是什么意思呢？甚至一些工作了很多年的程序员也对此一知半解。今天让我们来了解一下它们。


从C和C++运行]]></description><category></category></item><item><title><![CDATA[使用DirectShow的BaseClasses遇到的问题]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/25305237</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/25305237</guid><author>legionmation</author><pubDate>Thu, 08 May 2014 15:51:14 +0800</pubDate><description><![CDATA[在学习DirectShow时，难免会跑跑]]></description><category></category></item><item><title><![CDATA[MFC类继承图]]></title><link>https://blog.youkuaiyun.com/legionmation/article/details/25142873</link><guid>https://blog.youkuaiyun.com/legionmation/article/details/25142873</guid><author>legionmation</author><pubDate>Tue, 06 May 2014 16:47:07 +0800</pubDate><description><![CDATA[]]></description><category></category></item></channel></rss>