??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲最新av在线网站,jizz视频在线观看,国产自产在线视频一区http://www.aygfsteel.com/daiyie/zh-cnSun, 15 Jun 2025 08:26:01 GMTSun, 15 Jun 2025 08:26:01 GMT60Visual C++ 8.0对象布局的奥U:虚函数、多l承、虚拟?http://www.aygfsteel.com/daiyie/archive/2007/12/07/165953.htmldaiyiedaiyieFri, 07 Dec 2007 01:56:00 GMThttp://www.aygfsteel.com/daiyie/archive/2007/12/07/165953.htmlhttp://www.aygfsteel.com/daiyie/comments/165953.htmlhttp://www.aygfsteel.com/daiyie/archive/2007/12/07/165953.html#Feedback2http://www.aygfsteel.com/daiyie/comments/commentRss/165953.htmlhttp://www.aygfsteel.com/daiyie/services/trackbacks/165953.htmlVisual C++ 8.0对象布局的奥U:虚函数、多l承、虚拟?/a> 哈哈Q从M$ Visual C++ Team?a >Andy Rich那里又偷学到一招:VC8的隐含编译项/d1reportSingleClassLayout?strong>/d1reportAllClassLayout 。看个复杂的例子?如下)Q现在假设我们想知道Derivedcȝ对象布局Q怎么? 在Project Properties->C++->Command Line->Additional Options里面加上/d1reportSingleClassLayoutDerived吧!

class CommonBase
{
    
int co;
};

class Base1: virtual public CommonBase
{
public:
    
virtual void print1() {}
    
virtual void print2() {}
private:
    
int b1;
};

class Base2: virtual public CommonBase
{
public:
    
virtual void dump1() {}
    
virtual void dump2() {}
private:
    
int b2;
};

class Derived: public Base1, public Base2
{
public:
    
void print2() {}
    
void dump2() {}
private:
    
int d;
};

int _tmain(int argc, _TCHAR* argv[])
{
    
return 0;
}

F5~译之,你会惊奇地发玎ͼOutput里面有如下字P

 1 class Derived size(32):
 2    +---
 3    | +--- (base class Base1)
 4  0 | | {vfptr}
 5  4 | | {vbptr}
 6  8 | | b1
 7    | +---
 8    | +--- (base class Base2)
 9 12 | | {vfptr}
10 16 | | {vbptr}
11 20 | | b2
12    | +---
13 24 | d
14    +---
15    +--- (virtual base CommonBase)
16 28 | co
17    +---
18 
19 Derived::$vftable@Base1@:
20  0 | &Base1::print1
21  1 | &Derived::print2
22 
23 Derived::$vftable@Base2@:
24  0 | &Base2::dump1
25  1 | &Derived::dump2
26 
27 Derived::$vbtable@Base1@:
28  0 | -4
29  1 | 24 (Derivedd(Base1+4)CommonBase)
30 
31 Derived::$vbtable@Base2@:
32  0 | -4
33  1 | 12 (Derivedd(Base2+4)CommonBase)
34 
35 Derived::print2 this adjustor: 0
36 Derived::dump2 this adjustor: 12

看到了吗? VC8居然输出了Derived对象的完整布局! 我们l于可以不必两眼一抚w般的去peek/poke?...W?行表明,Derived对象d用了32字节Q其׃部分l成Q分别是?-?、行 8-?2、行13、行28Q其中前二者分别是基类Base1、Base2的布局Q最后的?8拟基cCommon的布局?br />
以基c?Base1部分ZQ可发现其由一个虚函数表指针vftable和虚指针vbtable构成Q先看Base1部分的vftable所指向的虚? vftable@Base1(?9)Q不隑֏玎ͼ其中的表?已经被Derived::print2loverride了;再来看Base2部分?vftable所指向的虚?vftable@Base2(?3)Q可发现Q同LQBase2::dump2被Derived::dump2l?override了。这不明摆着是虚函数机制嘛Qheh~

值得注意的是Q这个例子同时说明,多承场合下Q其实在单一对象中是存在多个 this指针?...?5-36l出了如何将Derived的this指针校正为其基类子对象this指针的偏U量Q也是_Ҏ?6Q假设有?Derived dQ那么d.dump1()实际上应该理解成通过虚表$vftable@Base2?(Base2*)(((char*)&d)+12))- >dump1()的调?...即传递给所有Base2成员函数的this指针应该?Base2*)((char*)(&d)+12)Q这里可能我写得恐怖了点,意思到了就?...q不Q普通ѝ多l承、对象Slicing的语义都在这个布局里面了,看仔l了哈~

OKQ多l承看完了,l箋看虚拟基cL如何布局的。虚基Common在Derived的布局中,位于Derived本n数据成员之后的位|。Base1?Base2中均保存了一个vbtable指针Q其分别指向各自所使用的虚$vbtable@Base1?vbtable@Base2Qؓ什么要指向一个虚? 很简单,因ؓBase1、Base2有可能会同时l承多个不同的虚拟基c?....q充分体CC++对象布局的复杂?...在每个虚中,保存了所l承的虚拟基c部分相对于子类部分vbtable指针的偏Ud|以Base2ZQ我们知道Base2的vbtable在Derived中的偏移gؓ16 (?0)Q则Ҏ$vbtable@Base2Q虚基Common部分距离Base2 vbtable指针的偏Udgؓ12,则有虚基Common在Derived中的dUdgؓ16+12。与普通多l承同理Q我们在调用非虚拟的虚基成员函数Ӟ必须Derived的this指针调整为指向虚基部分的this指针Q只有这h能成功地讉K虚基自n的数据成员和虚基的虚拟函?通过虚基自己?vftableQؓ单v见,上例中我没弄那么复杂了Q大家可以自q玩,明白如何举一反三卛_)

daiyie 2007-12-07 09:56 发表评论
]]>
KeepPasshttp://www.aygfsteel.com/daiyie/archive/2007/10/25/155956.htmldaiyiedaiyieThu, 25 Oct 2007 13:31:00 GMThttp://www.aygfsteel.com/daiyie/archive/2007/10/25/155956.htmlhttp://www.aygfsteel.com/daiyie/comments/155956.htmlhttp://www.aygfsteel.com/daiyie/archive/2007/10/25/155956.html#Feedback0http://www.aygfsteel.com/daiyie/comments/commentRss/155956.htmlhttp://www.aygfsteel.com/daiyie/services/trackbacks/155956.htmlTransferring the Password

There are various ways to get the passwords stored in KeePass into other windows. The first, and most simple method is copying them to the clipboard. For this, just double-click onto the specific field in the main password list. Example: if you want to copy the password of entry X, point onto the password field of the entry in the main view and double-click. The password is copied to the clipboard. If you enable the auto-clearing option, KeePass will clear the clipboard automatically after some seconds. This prevents you from forgetting to clear the clipboard yourself, leaving sensitive data in the clipboard.

The second method is drag-n-drop. As in method 1, point onto the field you want to use, click the left mouse button and hold it. Drag the data into other windows.

The third, and the most powerful method is auto-type. KeePass features a very mighty auto-type feature, which types user names, passwords, etc. into other windows for you. The default auto-typing sequence is: {USERNAME}{TAB}{PASSWORD}{TAB}{ENTER}. But this sequence is customizable, per entry (read the CHM documentation file that comes with KeePass for more about this). This makes the auto-type feature applicable to all windows and webforms you'll ever see. There are two submethods to perform an auto-type:

  • Selecting an entry: Just select the entry that you want to get auto-typed, right-click onto it and click "Perform Auto-Type". KeePass will minimize itself, the window that had the focus before will come to the front. KeePass starts typing the data into this window.
  • Global hot key: This is the most powerful of all methods. You leave KeePass running in the background. As soon as you're on a site that requires a login (the password of which you stored in KeePass before), just press a hot key (by default, Ctrl-Alt-A). KeePass immediately auto-types the data into the target window.


daiyie 2007-10-25 21:31 发表评论
]]>
bindhttp://www.aygfsteel.com/daiyie/archive/2007/09/23/147584.htmldaiyiedaiyieSun, 23 Sep 2007 09:09:00 GMThttp://www.aygfsteel.com/daiyie/archive/2007/09/23/147584.htmlhttp://www.aygfsteel.com/daiyie/comments/147584.htmlhttp://www.aygfsteel.com/daiyie/archive/2007/09/23/147584.html#Feedback1http://www.aygfsteel.com/daiyie/comments/commentRss/147584.htmlhttp://www.aygfsteel.com/daiyie/services/trackbacks/147584.html#include <boost/config.hpp>
#include <boost/bind.hpp>
#include <iostream>
#include <vector>
#include <algorithm>

template<class T>
inline T & ToRef( T *pT)
{
 return *pT;
}
#define TODEF(x) bind( ToRef<x>, _1)

template<class T>
inline void DeletePointer( T *pT)
{
 delete pT;
}
#define ALL(v) (v).begin(), (v).end()

struct X
{
public:
 int m_t;
 X():m_t(11)
 {
 }
 
    bool f(int a)
 {
  std::cout << m_t << std::endl;
  return true;
 }
};

int main()
{
    using namespace boost;
 using namespace std;
 
 vector<X *> v;
 for( int i=0; i<10; ++i)
  v.push_back( new X);
 
 for_each( ALL(v), bind(&X::f, TODEF(X), 4 ) );
 
 for_each( ALL(v), bind( DeletePointer<X>, _1) );
 
 return 0;
}

 



daiyie 2007-09-23 17:09 发表评论
]]>
论兔子如何吃掉狼http://www.aygfsteel.com/daiyie/archive/2007/05/23/119430.htmldaiyiedaiyieWed, 23 May 2007 08:27:00 GMThttp://www.aygfsteel.com/daiyie/archive/2007/05/23/119430.htmlhttp://www.aygfsteel.com/daiyie/comments/119430.htmlhttp://www.aygfsteel.com/daiyie/archive/2007/05/23/119430.html#Feedback1http://www.aygfsteel.com/daiyie/comments/commentRss/119430.htmlhttp://www.aygfsteel.com/daiyie/services/trackbacks/119430.html一天,一只兔子在山洞前写论文?
一只狼q来Q问兔子Q?#8216;你在写什么?” 
{:“论文”
狼问Q?#8220;你的论文的主题是什么?” 
{:“《论兔子如何吃掉狹{?#8221;?
狼听了哈哈大W?
兔子_我写的论文大部分E子在洞里,我把道理写的很清楚?
狼想看看兔子的论文是怎么写的。于是兔子把狼领q山z?
q了一会,兔子独自走出山洞?

兔子l箋在山z前写它的论文?
一只狐狸过来,问:“你在写什么?”
{:“我在写论?#8221;?
“论文的主题是什么?” 
{:“论兔子如何吃掉狐?#8221;。 
向来狡猾的狐怹W了。说Q?#8220;q怎么可能?#8221;
兔子_“我写的大部分E子q在z里Q我把道理写的很清楚?#8221;
狐狸惛_看看兔子的论文是怎么写的Q于是兔子把狐狸领进山洞?br>q了一会儿Q兔子独自一个走出山z?

最后,在山z里一只狮子在几堆白骨之间Q满意地一边剔着牙,一辚wd子交l它的论文的提要Q?#8220;一个动物,能力大小q不重要Q关键看你的导师是谁?/div>

daiyie 2007-05-23 16:27 发表评论
]]>
选狼q是选狮?/title><link>http://www.aygfsteel.com/daiyie/archive/2007/05/23/119429.html</link><dc:creator>daiyie</dc:creator><author>daiyie</author><pubDate>Wed, 23 May 2007 08:25:00 GMT</pubDate><guid>http://www.aygfsteel.com/daiyie/archive/2007/05/23/119429.html</guid><wfw:comment>http://www.aygfsteel.com/daiyie/comments/119429.html</wfw:comment><comments>http://www.aygfsteel.com/daiyie/archive/2007/05/23/119429.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/daiyie/comments/commentRss/119429.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/daiyie/services/trackbacks/119429.html</trackback:ping><description><![CDATA[<p><font size=3><span>据说q是道中国h老是选错的题Q当然这栯是有所隐喻的,不过我们大可以蟩出政ȝ范畴Q实际点_对于政治Q我们大多数人是心有余而力不的,于是会有各种表现Q焦虑的成了愤青一族,忍受的就成了z脑一族,M都没什么好词儿Q还没怎么呢就先自己掐h?/span><span><font face="Times New Roman">......</font></span></font></p> <p><span><font face="Times New Roman" size=3> </font></span></p> <p><font size=3><span>上帝把两羊攑֜草原上,一在南,一在北?/span></font></p> <p><font size=3><span>上帝q给群找了两种天敌Q一U是狮子Q一U是狹{?/span></font></p> <p><font size=3><span>上帝对羊说</span><span><font face="Times New Roman">:</font></span><span>“如果你们要狼Q就l一只,d随意咬你们?/span></font></p> <p><font size=3><span>如果你们要狮子,q两头Q你们可以在两头狮子中Q选一_q可以随时更换?#8221;</span></font></p> <p><span><font face="Times New Roman" size=3> </font></span></p> <p><font size=3><span>q道题的问题是Q如果你也在群中,你是选狼q是选狮子?</span></font></p> <p><font size=3><span>很容易做出选择吧?</span></font></p> <p><font size=3><span>好吧Q记住你的选择Q接著往下看?/span></font></p> <p><span><font face="Times New Roman" size=3> </font></span></p> <p><font size=3><span>南边那群想</span><span><font face="Times New Roman">,</font></span><span>狮子比狼凶猛得多</span><span><font face="Times New Roman">,</font></span><span>q是要狼吧。于?/span><span><font face="Times New Roman">,</font></span><span>它们p了一只狼?/span></font></p> <p><font size=3><span>北边那群想Q狮子虽然比狼凶猛得多,但我们有选择权,q是要狮子吧。于是,它们p了两头狮子?/span></font></p> <p><span><font face="Times New Roman" size=3> </font></span></p> <p><font size=3><span>那只D了南边的群后,开始吃?/span></font></p> <p><font size=3><span>Dn体小Q食量也,一只羊够它吃几天了?/span></font></p> <p><font size=3><span>q样群几天才被q杀一ơ?/span></font></p> <p><span><font face="Times New Roman" size=3> </font></span></p> <p><font size=3><span>北边那群挑选了一头狮子,另一头则留在上帝那里?/span></font></p> <p><font size=3><span>q头狮子q入群?/span><span><font face="Times New Roman">,</font></span><span>也开始吃。狮子不但比狼凶猛,而且食量惊hQ每天都要吃一只羊?/span></font></p> <p><font size=3><span>q样群天天都要被q杀Q惊恐万状?/span></font></p> <p><span><font face="Times New Roman" size=3> </font></span></p> <p><font size=3><span>群赶紧请上帝换一头狮子。不料,上帝保管的那头狮子一直没有吃东西Q正饥饿难?/span><span><font face="Times New Roman">,</font></span><span>它扑q羊,比前面那头狮子咬得更疯狂?/span></font></p> <p><font size=3><span>群一天到晚只是逃命Q连草都快吃不成了?/span></font></p> <p><span><font face="Times New Roman" size=3> </font></span></p> <p><font size=3><span>南边的羊庆q自己选对了天敌,又嘲W北边的群没有眼光?/span></font></p> <p><font size=3><span>北边的羊非常后悔,向上帝大倒苦?/span><span><font face="Times New Roman">,</font></span><span>要求更换天敌Q改要一只狼?/span></font></p> <p><font size=3><span>上帝_“天敌一旦确定,׃能更?/span><span><font face="Times New Roman">,</font></span><span>必须世代盔R</span><span><font face="Times New Roman">,</font></span><span>你们唯一的权利是在两头狮子中选择?#8221;</span></font></p> <p><span><font face="Times New Roman" size=3> </font></span></p> <p><font size=3><span>北边的羊只好把两头狮子不断更换?/span></font></p> <p><font size=3><span>可两头狮子同样凶D,换哪一头都比南边的群悲惨得多Q它们烦性不换了</span><span><font face="Times New Roman">,</font></span><span>让一头狮子吃得膘肥体?/span><span><font face="Times New Roman">,</font></span><span>另一头狮子则饿得_?/span></font></p> <p><font size=3><span>眼看那头瘦狮子快要饿M</span><span><font face="Times New Roman">,</font></span><span>群才请上帝换一头?/span></font></p> <p><span><font face="Times New Roman" size=3> </font></span></p> <p><font size=3><span>q头瘦狮子经q长旉的饥饿后</span><span><font face="Times New Roman">,</font></span><span>慢慢悟出了一个道?/span><span><font face="Times New Roman">:</font></span></font></p> <p><font size=3><span>自己虽然凶猛异常</span><span><font face="Times New Roman">,</font></span><span>一癑֏都不是Ҏ</span><span><font face="Times New Roman">,</font></span><span>可是自己的命q是操纵在羊手里的?/span></font></p> <p><font size=3><span>群随时可以把自己送回上帝那里</span><span><font face="Times New Roman">,</font></span><span>让自己饱受饥饿的煎熬</span><span><font face="Times New Roman">,</font></span><span>甚至有可能饿歅R?/span></font></p> <p><font size=3><span>想通这个道理后</span><span><font face="Times New Roman">,</font></span><span>瘦狮子就对羊特别客?/span><span><font face="Times New Roman">,</font></span><span>只吃ȝ和病?/span><span><font face="Times New Roman">,</font></span><span>凡是健康的羊它都不吃了?/span></font></p> <p><font size=3><span>群喜出望外</span><span><font face="Times New Roman">,</font></span><span>有几只小提议干脆固定要瘦狮?/span><span><font face="Times New Roman">,</font></span><span>不要那头肥狮子了?/span></font></p> <p><font size=3><span>一只老公提醒说</span><span><font face="Times New Roman">:</font></span><span>“瘦狮子是怕我们送它回上帝那里挨?/span><span><font face="Times New Roman">,</font></span><span>才对我们q么好?/span></font></p> <p><font size=3><span>万一肥狮子饿M</span><span><font face="Times New Roman">,</font></span><span>我们没有了选择的余?/span><span><font face="Times New Roman">,</font></span><span>瘦狮子很快就会恢复凶D的本性?#8221;</span></font></p> <p><font size=3><span>群觉得老羊说得有理</span><span><font face="Times New Roman">,</font></span><span>Z不让另一头狮子饿?/span><span><font face="Times New Roman">,</font></span><span>它们赶紧把它换回来?/span></font></p> <p><span><font face="Times New Roman" size=3> </font></span></p> <p><font size=3><span>原先膘肥体壮的那头狮?/span><span><font face="Times New Roman">,</font></span><span>已经饿得只剩下皮包骨头了</span><span><font face="Times New Roman">,</font></span><span>q且也懂得了自己的命q是操纵在羊手里的道理?/span></font></p> <p><font size=3><span>Z能在草原上待久一?/span><span><font face="Times New Roman">,</font></span><span>它竟百般讨好L来。而那头被送交l上帝的狮子</span><span><font face="Times New Roman">,</font></span><span>则难q得下了眼泪?/span></font></p> <p><font size=3><span>北边的羊在l历了重重磨隑֐</span><span><font face="Times New Roman">,</font></span><span>l于q上了自p在的生活?/span></font></p> <p><span><font face="Times New Roman" size=3> </font></span></p> <p><font size=3><span>南边的那羊的处境却来悲惨了</span><span><font face="Times New Roman">,</font></span><span>那只狼因为没有竞争对?/span><span><font face="Times New Roman">,</font></span><span>群又无法更换它</span><span><font face="Times New Roman">,</font></span></font></p> <p><font size=3><span>它就胡作非ؓ</span><span><font face="Times New Roman">,</font></span><span>每天都要咬死几十只羊</span><span><font face="Times New Roman">,</font></span><span>q只狼早已不吃羊肉了</span><span><font face="Times New Roman">,</font></span><span>它只喝羊心里的血?/span></font></p> <p><font size=3><span>它还不准叫</span><span><font face="Times New Roman">,</font></span><span>哪只叫就立刻咬死哪只?/span></font></p> <p><font size=3><span>南边的羊只能在心中哀?/span><span><font face="Times New Roman">:</font></span><span>“早知道这Pq不如要两头狮子?#8221;</span></font></p> <img src ="http://www.aygfsteel.com/daiyie/aggbug/119429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/daiyie/" target="_blank">daiyie</a> 2007-05-23 16:25 <a href="http://www.aygfsteel.com/daiyie/archive/2007/05/23/119429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++库讨?/title><link>http://www.aygfsteel.com/daiyie/archive/2007/05/15/117727.html</link><dc:creator>daiyie</dc:creator><author>daiyie</author><pubDate>Tue, 15 May 2007 14:47:00 GMT</pubDate><guid>http://www.aygfsteel.com/daiyie/archive/2007/05/15/117727.html</guid><wfw:comment>http://www.aygfsteel.com/daiyie/comments/117727.html</wfw:comment><comments>http://www.aygfsteel.com/daiyie/archive/2007/05/15/117727.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/daiyie/comments/commentRss/117727.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/daiyie/services/trackbacks/117727.html</trackback:ping><description><![CDATA[<p> </p> 开始之前,认Q?br>1.安装完成Visual Studio 2005Q确认安装的时候选中了Unicode MFC version以及CRT source codeQ默认是选中的,如果你没有改动的话那么应该是装上了的Q;<br>2.扑ֈ我们要动手术的目录,?(Program Files)\Microsoft Visual Studio 8\VC 下,扑ևATLMFC\SRC和CRT\SRC两个文g夹;<br>3.Q可选)安装Platform SDKQ复制最新版本的unicows.lib攑ֈVC\PlatformSDK\LIB中。VC8自带有unicows.libQ所以这一步可以不做?br>一Q编译MSLU的CRT?.0<br>首先请备份一下VC\Lib、VC\CRT\SRC、VC\ATLMFC\SRC、VC\ATLMFC\libq四个文件夹Q包括子文g夹)Q假如不心攚w的话可以直接从备份的文g多w复制文g出来?br>CRT库需要编译的是这6个DLLQMSVCR80.DLL、MSVCP80.DLL、MSVCM80.DLL、MSVCR80D.DLL、MSVCP80D.DLL、MSVCM80D.DLL。ؓ方便操作Q我们把要输出的MSLU的CRT库文件改为别的名字以免和原来的؜淆,分别ҎQMSLUR80.DLL、MSLUR80D.DLL、MSLUP80.DLL、MSLUP80D.DLL、MSLUM80.DLL、MSLUM80D.DLLQ如果你Ҏ别的名字的话Q后面的操作请做相应的改正)?br>Q?Q先把SRC目录下的相应文g改名Q?br>copy _SAMPLE_.RC MSLUR80.RC<br>copy SAMPLE_P.RC MSLUP80.RC<br>copy SAMPLE_M.RC MSLUM80.RC<br>copy SAMPLE_P.DEF MSLUP80.DEF<br>copy SAMPLD_P.DEF MSLUP80D.DEF<br>copy SAMPLE_M.DEF MSLUM80.DEF<br>copy SAMPLD_M.DEF MSLUM80D.DEF<br>copy SAMPLE_U.DEF MSLUU80.DEF<br>copy SAMPLD_U.DEF MSLUU80D.DEF<br>copy Intel\_SAMPLE_.DEF Intel\MSLUR80.DEF<br>copy Intel\_SAMPLD_.DEF Intel\MSLUR80D.DEF <br>Q?Q打开MSLUP80.DEFQ修改LIBRARY SAMPLE_P为LIBRARY MSLUP80Q?br>打开MSLUP80D.DEFQ修改LIBRARY SAMPLD_P为LIBRARY MSLUP80DQ?br>打开MSLUM80.DEFQ修改LIBRARY SAMPLE_M为LIBRARY MSLUM80Q?br>打开MSLUM80D.DEFQ修改LIBRARY SAMPLD_M为LIBRARY MSLUM80DQ?br>打开MSLUU80.DEFQ修改LIBRARY SAMPLE_M为LIBRARY MSLUM80Q(注意此处不是MSLUU80而是MSLUM80Q?br>打开MSLUU80D.DEFQ修改LIBRARY SAMPLD_M为LIBRARY MSLUM80DQ(注意此处不是MSLUU80D而是MSLUM80DQ?br>打开\Intel\MSLUR80.DEFQ修改LIBRARY _SAMPLE_为LIBRARY MSLUR80Q?br>打开\Intel\MSLUR80D.DEFQ修改LIBRARY _SAMPLD_为LIBRARY MSLUR80DQ?br>Q?Q打开SRC\makefile文gQ修改开头部分ؓQ?br>RETAIL_DLL_NAME=MSLUR80<br>RETAIL_DLL_NAME=MSLUR80<br>RETAIL_LIB_NAME=MSLUR80<br>RETAIL_DLLCPP_NAME=MSLUP80<br>RETAIL_LIBCPP_NAME=MSLUP80<br>RETAIL_DLLMIXED_NAME=MSLUM80<br>RETAIL_LIBMIXED_NAME=MSLUM80<br>RETAIL_LIBPURE_NAME=MSLUU80<br>RETAIL_PT_LIBMIXED_NAME=MLSUPTM<br>RETAIL_PT_LIBPURE_NAME=MLSUPTU<br>DEBUG_DLL_NAME=MSLUR80D<br>DEBUG_LIB_NAME=MSLUR80D<br>DEBUG_DLLCPP_NAME=MSLUP80D<br>DEBUG_LIBCPP_NAME=MSLUP80D<br>DEBUG_DLLMIXED_NAME=MSLUM80D<br>DEBUG_LIBMIXED_NAME=MSLUM80D<br>DEBUG_LIBPURE_NAME=MSLUU80D<br>DEBUG_PT_LIBMIXED_NAME=MLSUPTMD<br>DEBUG_PT_LIBPURE_NAME=MLSUPTUD<br>RC_NAME=MSLUR80<br>RCCPP_NAME=MSLUP80<br>RCMIXED_NAME=MSLUM80<br>54行处修改VCTOOLSQ注意自qVS2005安装目录Q假如安装到E:\SoftWare\Microsoft Visual Studio 8\下,则此处改为:<br>VCTOOLS=E:\SoftWare\Microsoft Visual Studio 8\VC<br>1779, 1841, 1905, 1940, 2037, 2105, 2139, 2230行的kernel32.libQ改为:unicows.lib kernel32.libQ一?个不要改多了Q;<br>Q?Q打开Visual Studio 2005 command promptQ从开始菜单或者是vc8的开发环境的菜单都可以启动)Q进入到SRC目录Q输入命令设|vctoolsQ假如VS2005安装在E:\SoftWare\Microsoft Visual Studio 8\下,则输入:<br>Set vctools=E:\SoftWare\Microsoft Visual Studio 8\VC<br>完成后输入bldnt启动SRC目录下的bldnt.bat批处理文件编译CRT库?br>译者:我编译的时候出来好多warningQ不他最后还是编译完成了?br>Q?Q编译完成之后lib文g都放在SRC\BUILD\INTEL\目录下,把文件名字改回来以便以前的程序可以链接,而且下面~译MFC库也需要。DLL文g不用改,新的lib文g知道该链接到谁那里。改名:<br>copy MLSUPTM.LIB PTRUSTM.LIB<br>copy MLSUPTMD.LIB PTRUSTMD.LIB<br>copy MLSUPTU.LIB PTRUSTU.LIB<br>copy MLSUPTUD.LIB PTRUSTUD.LIB<br>copy MSLUR80.LIB MSVCRT.LIB<br>copy MSLUR80D.LIB MSVCRTD.LIB<br>copy MSLUP80.LIB MSVCPRT.LIB<br>copy MSLUP80D.LIB MSVCPRTD.LIB <br>copy MSLUM80.LIB MSVCMRT.LIB<br>copy MSLUM80D.LIB MSVCMRTD.LIB<br>copy MSLUU80.LIB MSVCURT.LIB<br>copy MSLUU80D.LIB MSVCURTD.LIB<br>Q?Q把改名后的lib文g复制到VC\LIB目录下覆盖原来的文g?br>Q?Q把步骤Q?Q、(5Q、(6Q再执行一ơ来重徏MSLUP80(D).DLL和静态库Q以便他们能链接到我们自qMSVCRT(D).LIBQ指向我们的MSLUR80(D).DLLQ?br>xVS2005 command promptQ因为编译CRT库的时候定义了许多环境变量Q这些会使后面MFC库的~译出现错误?br>6个新的DLL文g都在\VC\crt\src\build\intel下,把这6个文件复制到pȝ目录下?br>二:~译MSLU的MFC?.0 Unicode版本<br>MFC库需要编译的是这4个DLLQ?br>MFC80U.DLL (Unicode Release) <br>MFC80UD.DLL (Unicode Debug) <br>MFCM80U.DLL (Mixed mode/Managed Unicode Release) <br>MFCM80UD.DLL (Mixed mode/Managed Unicode Debug)?br>为方便操作,我们把将要输出的MSLU的CRT库文件改为别的名字以免和原来的؜淆,分别ҎQ?br>MFC80LU.DLL <br>MFC80LUD.DLL <br>MFCM80LU.DLL <br>MFCM80LUD.DLL<br>Q如果你Ҏ别的名字的话Q后面的操作请做相应的改正)?br>Q?Q打开VC\ATLMFC\SRC\MFC\MFCDLL.MAKQ在274?07行的link @<<Q后面插入一行变成:<br> link @<<<br>/nod:kernel32.lib /nod:advapi32.lib /nod:user32.lib /nod:gdi32.lib /nod:shell32.lib /nod:comdlg32.lib /nod:version.lib /nod:mpr.lib /nod:rasapi32.lib /nod:winmm.lib /nod:winspool.lib /nod:vfw32.lib /nod:secur32.lib /nod:oleacc.lib /nod:oledlg.lib /nod:sensapi.lib<br>180行的<br>LIBS=$(CRTDLL) kernel32.lib gdi32.lib msimg32.lib user32.lib uuid.lib daouuid.lib htmlhelp.lib shlwapi.lib $(PROFLIB)<br>改ؓQ?br>LIBS=$(CRTDLL) unicows.lib kernel32.lib advapi32.lib comdlg32.lib shell32.lib oledlg.lib winspool.lib oleacc.lib gdi32.lib msimg32.lib user32.lib uuid.lib daouuid.lib htmlhelp.lib shlwapi.lib $(PROFLIB)<br>Q此处不同于原文。原文ؓQ?br>LIBS=$(CRTDLL) unicows.lib kernel32.lib gdi32.lib msimg32.lib user32.lib uuid.lib daouuid.lib htmlhelp.lib shlwapi.lib $(PROFLIB)<br>译者依照原文修改,~译的时候出C错误Q增加数个lib文g后编译通过Q?br>Q?Q打开VC\ATLMFC\SRC\MFCM\MFCMDLL.MAKQ在253?72行的link @<<Q后面插入一行变成:<br> link @<<<br>/nod:kernel32.lib /nod:advapi32.lib /nod:user32.lib /nod:gdi32.lib /nod:shell32.lib /nod:comdlg32.lib /nod:version.lib /nod:mpr.lib /nod:rasapi32.lib /nod:winmm.lib /nod:winspool.lib /nod:vfw32.lib /nod:secur32.lib /nod:oleacc.lib /nod:oledlg.lib /nod:sensapi.lib<br>215行的<br>LIBS=$(CRTDLL) $(CRTMDLL) mscoree.lib kernel32.lib gdi32.lib msimg32.lib user32.lib \<br>改ؓQ?br>LIBS=$(CRTDLL) $(CRTMDLL) mscoree.lib unicows.lib kernel32.lib advapi32.lib comdlg32.lib shell32.lib oledlg.lib winspool.lib mpr.lib oleacc.lib gdi32.lib msimg32.lib user32.lib \<br>Q此处原文ؓQ?br>LIBS=$(CRTDLL) $(CRTMDLL) mscoree.lib unicows.lib kernel32.lib gdi32.lib msimg32.lib user32.lib \<br>其余说明同上Q?br>Q?Q打开\VC\atlmfc\src\mfcm\INTEL\mfcm80u.def 文gQ把W?0行的LIBRARY mfcm80u 改ؓQ?br>LIBRARY mfcm80Lu <br>打开\VC\atlmfc\src\mfcm\INTEL\mfcm80ud.def文gQ把W?0行的LIBRARY mfcm80ud改ؓQ?br>LIBRARY mfcm80Lud<br>Q?Q打开\VC\atlmfc\src\mfcm\wfrmcmd.cpp文gQ?51行的#error Following information required to build private version?/注释掉或者直接把该行删掉Q?53行的[assembly: AssemblyTitle("")];改ؓQ?br>[assembly: AssemblyTitle("mfcm80L")];<br>Q?Q打开\VC\atlmfc\src\mfcm\interfaces\AssemblyInfo.cpp文gQ?8行的#error Following information required to build private version?/注释掉或者直接把该行删掉Q?5行的[assembly: AssemblyTitle("")];改ؓQ?br>[assembly: AssemblyTitle("mfcm80Lifaces")];<br>Q?Q在\VC\atlmfc\src\下徏立一个批处理文gQbuildmfc.batQ内容ؓQ?br>nmake -f atlmfc.mak MFC libname=MFC80L<br>Q?Q打开Visual Studio 2005 command promptQ进入目录\VC\atlmfc\src\Q输入buildmfc执行buildmfc.bat~译MFC库?br>~译完成之后Q在\VC\atlmfc\src\mfc\intel下有MFC80LU.DLL、MFC80LUD.DLLQ在\VC\atlmfc\src\mfcm\INTEL下有MFCM80LU.DLL、MFCM80LUD.DLLQ把q?个DLL文g复制到系l目录下Q在\VC\atlmfc\lib\INTEL下有MFC80LU.LIB、MFC80LUD.LIB、MFCM80LU.lib、MFCM80LUD.libQ把文g名改为:<br>MFC80U.LIB、MFC80UD.LIB、MFCM80U.lib、MFCM80UD.lib<br>把这四个lib文g复制到\VC\atlmfc\lib下覆盖原来的文g完成了? <img src ="http://www.aygfsteel.com/daiyie/aggbug/117727.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/daiyie/" target="_blank">daiyie</a> 2007-05-15 22:47 <a href="http://www.aygfsteel.com/daiyie/archive/2007/05/15/117727.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ٸ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ԫ</a>| <a href="http://" target="_blank">̴</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯ¥</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank">潭</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">֯</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ؼ</a>| <a href="http://" target="_blank">Ͻ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʲ</a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ó</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ũ</a>| <a href="http://" target="_blank">Ϻӿ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>