青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

runsisi

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  45 隨筆 :: 15 文章 :: 26 評(píng)論 :: 0 Trackbacks

#

 

網(wǎng)上關(guān)于MFC規(guī)則DLL的創(chuàng)建和使用的資料比較多,其實(shí)也就那兩三篇轉(zhuǎn)過(guò)來(lái)轉(zhuǎn)過(guò)去:)
但是好像都只是用自己寫的MFC主程序調(diào)用MFC DLL,涉及到DLL的資源問(wèn)題時(shí)都會(huì)提及三種解決方法:
1)    AFX_MANAGE_STATE(AfxGetStaticModuleState());
2)    AfxGetResourceHandle(); 
AfxSetResourceHandle();
3)    在主程序中使用方法2;
如果是自己寫的MFC主程序自然三種方法都可以,但是如果不是這種情況呢
?比如:
1)    主程序是SDK寫的,然后調(diào)用MFC DLL
2)    主程序根本就不是我們自己寫的,MFC DLL只是作為一個(gè)HOOK DLL注入主程序中
3)    主程序是用其他GUI庫(kù)寫的
在這幾種情況下上述的2)、
3)兩種方法是無(wú)法使用的,想想為什么?
只有方法1)可行,當(dāng)然我們也可以使用如下的方法:
_AFX_THREAD_STATE
* pThreadState = AfxGetThreadState();
AFX_MODULE_STATE
* pOldModState = pThreadState->m_pModuleState;
//Ur code here?
pThreadState->m_pModuleState = pOldModState;
為什么使用MFC DLL
? 呵呵。
有的文章里有這樣一段話:
AFX_MANAGE_STATE(AfxGetStaticModuleState());的方法只能等函數(shù)的作用空間結(jié)束之后才恢復(fù)資源句柄。由于可執(zhí)行文件必須重畫工具條等原因,因此建議只要有可能就必須恢復(fù)資源句柄,否則可能會(huì)遇到許多問(wèn)題。比如說(shuō),如果用戶移動(dòng)DLL的對(duì)話框,而此時(shí)資源句柄仍然為DLL的資源,那么程序就會(huì)崩潰。最好的恢復(fù)句柄的時(shí)機(jī)在對(duì)話框響應(yīng)WM_INITDIALOG消息的時(shí)候,因?yàn)檫@時(shí)對(duì)話框的模板等已經(jīng)讀出了。
不知道這段話的結(jié)論是怎樣得出來(lái)的,而所謂的恢復(fù)句柄的方法我也不知道他是怎么恢復(fù)的。實(shí)際測(cè)試的結(jié)果是根本不需要考慮這個(gè),即使是單線程主程序,MFC DLL在主程序的主線程內(nèi)執(zhí)行;如果MFC DLL是在單獨(dú)的一個(gè)線程內(nèi)執(zhí)行,則更加不需要考慮這個(gè)問(wèn)題;如果主程序是SDK程序則根本不需要考慮這個(gè)問(wèn)題,因?yàn)镾DK程序都是直接操作句柄的。
如果覺(jué)得有錯(cuò)那就使用我提供的另外一種方法,或者使用花括號(hào)吧,呵呵。

runsisi@HUST
posted @ 2010-09-17 18:41 runsisi 閱讀(395) | 評(píng)論 (0)編輯 收藏

n久沒(méi)有寫過(guò)了,轉(zhuǎn)載一篇,呵呵。不喜歡轉(zhuǎn)載,但這篇文章確實(shí)還不錯(cuò),只是不知道為什么找不到原文出處。
以下為轉(zhuǎn)載全文。修改了一些細(xì)節(jié)。對(duì)cppblog崩潰了,這是啥所見(jiàn)即所得排版啊,唉,暈倒。

這幾天寫的程序應(yīng)用到多繼承。

以前對(duì)多繼承的概念非常清晰,可是很久沒(méi)用就有點(diǎn)模糊了。重新研究一下,刷新下記憶。

假設(shè)我們有下面的代碼:

#include <stdio.h>

class A
{
private:
   char data;
public:
   A(){data = 'A';}
   virtual void Show(){printf("A\n");};
   virtual void DispA(){printf("a\n");};
};

class B
{
private:
   int data;
public:
   B(){data = 'B';}
   virtual void Show(){printf("B\n");};
   virtual void DispB(){printf("b\n");};
};

class C
{
private:
   char data;
public:
   C(){data = 'C';}
   virtual void Show(){printf("C\n");};
   virtual void DispC(){printf("c\n");};
};

class D : public A, public B, public C
{
public:
   char data;
public:
   D(){data = 'D';}
   virtual void Show(){printf("D\n");};
   virtual void DispD(){printf("d\n");};
};

class E : public D
{
private:
   char data;
public:
   E(){data = 'E';}
   virtual void Show(){printf("E\n");};
   virtual void DispE(){printf("e\n");};
};

int main()
{
   D *d = new D;
   A *a = (A*)d;
   B *b = (B*)d;
   C *c = (C*)d;;

   d->Show();
   a->Show();
   b->Show();

   a->DispA();
   b->DispB();
   d->DispD();

   D *d1 = (D*)a;
   d1->Show();
   d1->DispD();
   D *d2 = (D*)b;
   d2->Show();
   d2->DispD();

   char x = d->data;
   return 0;
}

每個(gè)類都有兩個(gè)虛擬函數(shù)Show()DispX()。類A,B,C是基本類,而D是多繼承,最后E又繼承了D。那么對(duì)于類E,它的內(nèi)存映像是怎樣的呢?為了解答這個(gè)問(wèn)題,我們回顧一下基本類的內(nèi)存映像:

+ --------------+ <- this
+    VTAB       +
+ --------------+
+               +
+    Data       +
+               +
+ --------------+

如果一個(gè)類有虛擬函數(shù),那么它就有虛函數(shù)表(VTAB)。類的第一個(gè)單元是一個(gè)指針,指向這個(gè)虛函數(shù)表。如果類沒(méi)有虛函數(shù),并且它的祖先(所有父類)均沒(méi)有虛函數(shù),那么它的內(nèi)存映像和C的結(jié)構(gòu)一樣。所謂虛函數(shù)表就是一個(gè)數(shù)組,每個(gè)單元指向一個(gè)虛函數(shù)地址。
如果類Y是類X的一個(gè)繼承,那么類Y的內(nèi)存映像如下:

+ --------------+ <- this
+   Y
VTAB   +
+ --------------+
+               +
+   X
Data   +
+               +
+ --------------+
+               +
+   Y
Data   +
+               +
+ --------------+
Y
的虛函數(shù)表基本和X的相似。如果Y有新的虛函數(shù),那么就在VTAB的末尾加上一個(gè)。如果Y重新定義了原有的虛函數(shù),那么原的指針指向新的函數(shù)入口。這樣無(wú)論是內(nèi)存印象和虛函數(shù)表,Y都和X兼容。這樣當(dāng)執(zhí)行 X* x = (Y*)y;之后,x可以很好的被運(yùn)用,并且可以享受新的虛擬函數(shù)。

現(xiàn)在看多重繼承:
class D : public A, public B, public C
{
   ....
}
它的內(nèi)存映像如下
:  
+ --+ -----------------+ 00H <- this
+   +    D
VTAB     +
+ A + -----------------+ 04H
+   +    A
的 數(shù)據(jù)
     +
+ --+ -----------------+ 08H
+   +    B
VTAB'    +
+ B + -----------------+ 0CH
+   +    B
的 數(shù)據(jù)
     +
+ --+ -----------------+ 10H
+   +    C
VTAB'    +
+ C + -----------------+ 14H
+   +    C
的 數(shù)據(jù)
     +
+ --+ -----------------+ 18H
+ D +    D
的 數(shù)據(jù)
     +
+ --+ -----------------+
(因?yàn)閷?duì)齊于雙字,A~D的數(shù)據(jù)雖然只是一個(gè)char,但需要對(duì)齊到DWORD,所以占4字節(jié))

對(duì)于A,它和單繼承沒(méi)有什么兩樣。BC被簡(jiǎn)單地放在A的后面。如果它們虛函數(shù)在D中被重新定義過(guò)(比如Show函數(shù)),那么它們需要使用新的VTAB,使被重定義的虛函數(shù)指到正確的位置上(這對(duì)于COM或類似的技術(shù)是至關(guān)重要的)。最后,D的數(shù)據(jù)被放置到最后面。
對(duì)于E的內(nèi)存映像問(wèn)題就可以不說(shuō)自明了。

下面我們看一下C++是如何處理
   D *d;
   ......
   B *b = (B*)d;
這樣的要求的。設(shè)置斷點(diǎn),進(jìn)入反匯編,你可以看到如下的匯編代碼:

B *b = (B*)d;
00401062  cmp         dword ptr [d],0
00401066  je          main+73h (401073h)
00401068  mov         eax,dword ptr [d]
0040106B  add         eax,8
0040106E  mov         dword ptr [ebp-38h],eax
00401071  jmp         main+7Ah (40107Ah)
00401073  mov         dword ptr [ebp-38h],0
0040107A  mov         ecx,dword ptr [ebp-38h]
0040107D  mov         dword ptr [b],ecx
從上述匯編代碼可以看出:如果源(這里是d)是NULL,那么目標(biāo)(這里是b)也將被置為NULL,否則目標(biāo)將指向源的地址并向下偏移8個(gè)字節(jié),正好就是上圖所示BVTAB位置。至于為什么要用ebp-38h作緩存,這是編譯器的算法問(wèn)題了。等以后有時(shí)間再研究。

接下來(lái)看一個(gè)比較古怪的問(wèn)題,這個(gè)也是我寫這篇文章的初衷:
根據(jù)上面的多繼承定義,如果給出一個(gè)類B的實(shí)例b,我們是否可以求出D的實(shí)例?

為什么要問(wèn)這個(gè)問(wèn)題。因?yàn)榇嬖谙旅娴目赡苄裕?/font>
class B
{
   ...
   virtual int GetTypeID()=0;
   ...
};

class D : public A, public B, public C
{
   ...
   virtual int GetTypeID(){return 0;};
   ...
};

class Z : public X, public Y, public B
{
   ...
   virtual int GetTypeID(){return 1;};
   ...
};

void MyFunc(B* b)
{
   int t = b->GetTypeID();
   switch(t)
   {
   case 0:
       DoSomething((D*)b); //
可能嗎?

       break;
   case 1:
       DoSomething((Z*)b); //
可能嗎?

       break;
   default:
       break;
   }
}

猛一看很值得懷疑。但仔細(xì)想想,這是可能的,事實(shí)也證明了這一點(diǎn)。因?yàn)榫幾g器了解這DB這兩個(gè)類相互之間的關(guān)系(也就是偏移量),因此它會(huì)做相應(yīng)的轉(zhuǎn)換。同樣,設(shè)置斷點(diǎn),查看匯編:
D *d2 = (D*)b;
00419992  cmp         dword ptr [b],0
00419996  je          main+196h (4199A6h)
00419998  mov         eax,dword ptr [b]
0041999B  sub         eax,8
0041999E  mov         dword ptr [ebp-13Ch],eax
004199A4  jmp         main+1A0h (4199B0h)
004199A6  mov         dword ptr [ebp-13Ch],0
004199B0  mov         ecx,dword ptr [ebp-13Ch]
004199B6  mov         dword ptr [d2],ecx
如果源(這里是b)為NULL,那么目標(biāo)(這里是d2)也為NULL。否則目標(biāo)取源的地址并向上偏移8個(gè)字節(jié),這樣正好指向D的實(shí)例位置。同樣,為啥需要ebp-13Ch做緩存,待查。

前一段時(shí)間因?yàn)閾?dān)心.NET中將interface轉(zhuǎn)成相應(yīng)的類會(huì)有問(wèn)題。今天對(duì)C++多重繼承的復(fù)習(xí)徹底消除了疑云。

 

 

posted @ 2010-09-08 14:14 runsisi 閱讀(213) | 評(píng)論 (0)編輯 收藏

畢業(yè)已經(jīng)整整一年,又到一年鳳凰花開(kāi)的時(shí)候。

親愛(ài)的2010屆畢業(yè)生同學(xué)們:
    你們好!
    首先,為你們完成學(xué)業(yè)并即將踏上新的征途送上最美好的祝愿。
    同學(xué)們,在華中科技大學(xué)的這幾年里,你們一定有很多珍貴的記憶!
    你們真幸運(yùn),國(guó)家的盛世如此集中相伴在你們大學(xué)的記憶中。08奧運(yùn)留下的記憶,不
僅是金牌數(shù)的第一,不僅是開(kāi)幕式的華麗,更是中華文化的魅力和民族向心力的顯示;六
十年大慶留下的記憶,不僅是領(lǐng)袖的揮手,不僅是自主研制的先進(jìn)武器,不僅是女兵的微
笑,不僅是隊(duì)伍的威武整齊,更是改革開(kāi)放的歷史和旗幟的威力;世博會(huì)留下的記憶,不
僅是世博之夜水火相容的神奇,不僅是中國(guó)館的宏偉,不僅是異國(guó)場(chǎng)館的浪漫,更是中華
的崛起,世界的驚異;你們一定記得某國(guó)總統(tǒng)的傲慢與無(wú)禮,你們也讓他記憶了你們的不
屑與蔑視;同學(xué)們,伴隨著你們大學(xué)記憶的一定還有什錦八寶飯;還有一個(gè)G2的新詞,它
將永遠(yuǎn)成為世界新的記憶。
    近幾年,國(guó)家頻發(fā)的災(zāi)難一定給你們留下深刻的記憶。汶川的顫抖,沒(méi)能抖落中國(guó)人
民的堅(jiān)強(qiáng)與剛毅;玉樹的搖動(dòng),沒(méi)能撼動(dòng)漢藏人民的齊心與合力。留給你們記憶的不僅是
大悲的哭泣,更是大愛(ài)的洗禮;西南的干旱或許使你們一樣感受渴與饑,留給你們記憶的
,不僅是大地的喘息,更是自然需要和諧、發(fā)展需要科學(xué)的道理。
    在華中大的這幾年,你們會(huì)留下一生中特殊的記憶。你一定記得剛進(jìn)大學(xué)的那幾分稚
氣,父母親人送你報(bào)到時(shí)的情景歷歷;你或許記得“考前突擊而帶著忐忑不安的心情走向
考場(chǎng)時(shí)的悲壯” ,你也會(huì)記得取得好成績(jī)時(shí)的欣喜;你或許記得這所并無(wú)悠久歷史的
學(xué)校不斷追求卓越的故事;你或許記得裘法祖院士所代表的同濟(jì)傳奇以及大師離去時(shí)同濟(jì)
校園中彌漫的悲痛與凝重氣息;你或許記得人文素質(zhì)講堂的擁擠,也記得在社團(tuán)中的奔放
與隨意;你一定記得騎車登上“絕望坡”的喘息與快意;你也許記得青年園中令你陶醉的
發(fā)香和桂香,眼睛湖畔令你流連忘返的圣潔或妖嬈;你或許“記得向喜歡的女孩表白被拒
時(shí)內(nèi)心的煎熬”,也一定記得那初吻時(shí)的如醉如癡。可是,你是否還記得強(qiáng)磁場(chǎng)和光
電國(guó)家實(shí)驗(yàn)室的建立?是否記得創(chuàng)新研究院和啟明學(xué)院的聳起?是否記得為你們領(lǐng)航的黨
旗?是否記得人文講壇上精神矍鑠的先生叔子?是否記得傾聽(tīng)你們?cè)V說(shuō)的在線的“張媽媽
”?是否記得告訴你們撿起路上樹枝的劉玉老師?是否記得應(yīng)立新老師為你們修改過(guò)的簡(jiǎn)
歷,但愿它能成為你們進(jìn)入職場(chǎng)的最初記憶。同學(xué)們,華中大校園里,太多的人和事需要
你們記憶。
    請(qǐng)相信我,日后你們或許會(huì)改變今天的某些記憶。瑜園的梧桐,年年飛絮成“雨”,
今天或許讓你覺(jué)得如淫雨霏霏,使你心情煩躁、郁悶。日后,你會(huì)覺(jué)得如果沒(méi)有梧桐之“
雨”,瑜園將缺少滋潤(rùn),若沒(méi)有梧桐的遮蓋,華中大似乎缺少前輩的庇蔭,更少了歷史的
沉積。你們一定還記得,學(xué)校的排名下降使你們生氣,未來(lái)或許你會(huì)覺(jué)得“不為排名所累
”更體現(xiàn)華中大的自信與定力。
    我知道,你們還有一些特別的記憶。你們一定記住了“俯臥撐”、“躲貓貓”、“喝
開(kāi)水”,從熱鬧和愚蠢中,你們記憶了正義;你們記住了“打醬油”和“媽媽喊你回家吃
飯”,從麻木和好笑中,你們記憶了責(zé)任和良知;你們一定記住了姐的狂放,哥的犀利。
未來(lái)有一天,或許當(dāng)年的記憶會(huì)讓你們問(wèn)自己,曾經(jīng)是姐的娛樂(lè),還是哥的寂寞?
    親愛(ài)的同學(xué)們,你們?cè)谌A中科技大學(xué)的幾年給我留下了永恒的記憶。我記得你們?yōu)榱?br>士尋親千里,記得你們?cè)诠麻L(zhǎng)征路上的經(jīng)歷;我記得你們?cè)诟鞣N社團(tuán)的驕人成績(jī);我記
得你們時(shí)而感到“無(wú)語(yǔ)”時(shí)而表現(xiàn)的焦慮,記得你們?yōu)橹袊?guó)的“常青藤”學(xué)校中無(wú)華中大
一席而灰心喪氣;我記得某些同學(xué)為“學(xué)位門”、為光谷同濟(jì)醫(yī)院的選址而憤激;我記得
你們剛剛對(duì)我的呼喊:“根叔,你為我們做成了什么?”——是啊,我也得時(shí)時(shí)拷問(wèn)自己
的良心,到底為你們做了什么?還能為華中大學(xué)子做什么?
    我記得,你們都是小青年。我記得“吉丫頭”,那么平凡,卻格外美麗;我記得你們
中間的胡政在國(guó)際權(quán)威期刊上發(fā)表多篇高水平論文,創(chuàng)造了本科生參與研究的奇跡;我記
得“校歌男”,記得“選修課王子”,同樣是可愛(ài)的孩子。我記得沉迷于網(wǎng)絡(luò)游戲甚至頻
臨退學(xué)的學(xué)生與我聊天時(shí)目光中透出的茫然與無(wú)助,他們還是華中大的孩子,他們更成為
我心中抹不去的記憶。
    我記得你們的自行車和熱水瓶常常被偷,記得你們?yōu)閾屨甲欢冻龅钠D辛;記得你
們?cè)诤涞亩焓帜_冰涼,記得你們?cè)谘谉岬南募緩匾闺y眠;記得食堂常常讓你們生氣,
我當(dāng)然更記得自己說(shuō)過(guò)的話:“我們絕不賺學(xué)生一分錢”,也記得你們對(duì)此言并不滿意;
但愿華中大尤其要有關(guān)于校園丑陋的記憶。只要我們共同記憶那些丑陋,總有一天,我們
能將丑陋轉(zhuǎn)化成美麗。
    同學(xué)們,你們中的大多數(shù)人,即將背上你們的行李,甚至遠(yuǎn)離。請(qǐng)記住,最好不要再
讓你們的父母為你們送行。“面對(duì)歲月的侵蝕,你們的煩惱可能會(huì)越來(lái)越多,考慮的問(wèn)題
也可能會(huì)越來(lái)越現(xiàn)實(shí),角色的轉(zhuǎn)換可能會(huì)讓你們感覺(jué)到有些措手不及。”也許你會(huì)選
擇“膠囊公寓”,或者不得不蝸居,成為蟻?zhàn)逯粏T。沒(méi)關(guān)系,成功更容易光顧磨難和艱
辛,正如只有經(jīng)過(guò)泥濘的道路才會(huì)留下腳印。請(qǐng)記住,未來(lái)你們大概不再有批評(píng)上級(jí)的隨
意,同事之間大概也不會(huì)有如同學(xué)之間簡(jiǎn)單的關(guān)系;請(qǐng)記住,別太多地抱怨,成功永遠(yuǎn)不
屬于整天抱怨的人,抱怨也無(wú)濟(jì)于事;請(qǐng)記住,別沉迷于世界的虛擬,還得回到社會(huì)的現(xiàn)
實(shí);請(qǐng)記住,“敢于競(jìng)爭(zhēng),善于轉(zhuǎn)化”,這是華中大的精神風(fēng)貌,也許是你們未來(lái)成功的
真諦;請(qǐng)記住,華中大,你的母校。“什么是母校?就是那個(gè)你一天罵他八遍卻不許別人
罵的地方”。多么樸實(shí)精辟!
    親愛(ài)的同學(xué)們,也許你們難以有那么多的記憶。如果問(wèn)你們關(guān)于一個(gè)字的記憶,那一
定是“被”。我知道,你們不喜歡“被就業(yè)”、“被堅(jiān)強(qiáng)”,那就挺直你們的脊梁,挺起
你們的胸膛,自己去就業(yè),堅(jiān)強(qiáng)而勇敢地到社會(huì)中去闖蕩。
    親愛(ài)的同學(xué)們,也許你們難以有那么多的記憶,也許你們很快就會(huì)忘記根叔的嘮叨與
瑣細(xì)。盡管你們不喜歡“被”,根叔還是想強(qiáng)加給你們一個(gè)“被”:你們的未來(lái)“被”華
中大記憶!
posted @ 2010-06-23 13:14 runsisi 閱讀(274) | 評(píng)論 (0)編輯 收藏

嗯 表白啦^^
其實(shí)喜歡了好久好久,就是不敢說(shuō)出口,也許是因?yàn)樗珒?yōu)秀了吧^^,而我... :(
躺床上給她發(fā)短信說(shuō)喜歡她...
預(yù)料中的答案,沒(méi)有肯定欣然接受也沒(méi)有斷然拒絕...
心情比以前好多啦^^
posted @ 2010-05-18 20:34 runsisi 閱讀(661) | 評(píng)論 (7)編輯 收藏

下 了 個(gè) 10.04,原來(lái) 還 滿 懷期待,真 正 裝 上 ,覺(jué)得比 fedora還 是 差太 多 了 .
fedora的 缺點(diǎn) 就 是 軟件少 了 點(diǎn) ,不 太 穩(wěn)定 .
害我 把fedora格了 ,郁悶...
等 再過(guò)半個(gè) 月 裝 fedora13算 啦 ..

posted @ 2010-05-01 14:38 runsisi 閱讀(176) | 評(píng)論 (0)編輯 收藏

      今天川外公布錄取結(jié)果,從昨晚開(kāi)始不停的刷新,上午在公司由于沒(méi)有網(wǎng),過(guò)了沒(méi)
多久就用手機(jī)上去看看。川外的效率也太低了點(diǎn),下午去了趟電腦城,然后又回來(lái)上了
一節(jié)自然辯證法,還是沒(méi)有出來(lái),直到第二節(jié)課打鈴的時(shí)候又上去看了一次,這一次終
于沒(méi)有讓我失望,結(jié)果出來(lái)了,懷著忐忑不安的心,翻到第二頁(yè)終于找到莎子的名字了,
趕忙跑出去給她打了個(gè)電話。擔(dān)心了這么天,終于可以松口氣啦... gxgx ^^。
posted @ 2010-04-16 19:28 runsisi 閱讀(3504) | 評(píng)論 (0)編輯 收藏

有人在fedora12下成功編譯過(guò)內(nèi)核沒(méi)?有的給我留個(gè)言啊:)
可以引導(dǎo)至字符界面,但死都啟動(dòng)不了圖形登錄界面,為了這個(gè)快折騰了我一個(gè)月了。
在ubuntu隨便就編譯成功了,什么特殊的操作都不需要。

本打算裝ubuntu編譯內(nèi)核,用fedora進(jìn)行日常使用,但至少裝了10遍ubuntu都不成功,總是裝到94%的地方安裝程序crash了,換linux mint也一樣,真的是郁悶了,最后雖然用fedora的grub可以引導(dǎo)裝的linux mint但總感覺(jué)有點(diǎn)不那個(gè),以前裝過(guò)那么多次的ubuntu什么問(wèn)題都沒(méi)出現(xiàn)過(guò),郁悶。
順便說(shuō)一句,真的沒(méi)發(fā)現(xiàn)linux mint比ubuntu有什么改進(jìn)的地方,自帶的解碼器也沒(méi)幾個(gè),還是幾乎什么都放不了,還白白多占了300多M的iso空間。既然同樣是依賴源,顯然還是裝ubuntu要好。

懷疑是硬盤的問(wèn)題,重新裝了一遍fedora,將分區(qū)重新分了一下,將所有的電影電視劇都刪了,總共100多G的東西,同時(shí)把GNOME也裝上去了,因?yàn)閾?dān)心是因?yàn)閗dm的原因?qū)е虏荒芤龑?dǎo)圖形登錄界面。又編譯了一遍內(nèi)核,用gdm還是無(wú)法引導(dǎo)登錄界面,郁悶。
暫時(shí)還沒(méi)有裝ubuntu,硬盤里只有一個(gè)linux mint的盤,有時(shí)間再試試。

yum更新時(shí)出了點(diǎn)問(wèn)題,在更新的時(shí)候去吃飯了,等回來(lái)一看估計(jì)系統(tǒng)又待機(jī)了,我這筆記本不知道是啥問(wèn)題,待機(jī)后只能重啟,重啟后繼續(xù)更新就出了依賴問(wèn)題,不知道是我沒(méi)有執(zhí)行yum-complete-transaction的原因還是別的,但總感覺(jué)是yum自己的問(wèn)題,這些包又是不能刪除的,刪除了就會(huì)連帶刪除幾乎整個(gè)系統(tǒng),網(wǎng)上碰到一個(gè)外國(guó)人出現(xiàn)了同樣的問(wèn)題,但也沒(méi)有解決方法。問(wèn)題如下:

Finished Dependency Resolution
PackageKit
-yum-0.5.4-0.1.20091029git.fc12.i686 from installed has depsolving problems
  
--> Missing Dependency: PackageKit = 0.5.4-0.1.20091029git.fc12 is needed by package PackageKit-yum-0.5.4-0.1.20091029git.fc12.i686 (installed)
rpm
-libs-4.7.1-6.fc12.i686 from installed has depsolving problems
  
--> Missing Dependency: rpm = 4.7.1-6.fc12 is needed by package rpm-libs-4.7.1-6.fc12.i686 (installed)
1:perl-Pod-Escapes-1.04-82.fc12.i686 from installed has depsolving problems
  
--> Missing Dependency: perl = 4:5.10.0-82.fc12 is needed by package 1:perl-Pod-Escapes-1.04-82.fc12.i686 (installed)
3:perl-version-0.74-82.fc12.i686 from installed has depsolving problems
  
--> Missing Dependency: perl = 4:5.10.0-82.fc12 is needed by package 3:perl-version-0.74-82.fc12.i686 (installed)
Error: Missing Dependency: PackageKit 
= 0.5.4-0.1.20091029git.fc12 is needed by package PackageKit-yum-0.5.4-0.1.20091029git.fc12.i686 (installed)
Error: Missing Dependency: perl 
= 4:5.10.0-82.fc12 is needed by package 3:perl-version-0.74-82.fc12.i686 (installed)
Error: Missing Dependency: perl 
= 4:5.10.0-82.fc12 is needed by package 1:perl-Pod-Escapes-1.04-82.fc12.i686 (installed)
Error: Missing Dependency: rpm 
= 4.7.1-6.fc12 is needed by package rpm-libs-4.7.1-6.fc12.i686 (installed)
 You could 
try using --skip-broken to work around the problem
 You could 
try running: package-cleanup --problems
                        package
-cleanup --dupes
                        rpm 
-Va --nofiles --nodigest

奇怪的是這些依賴的包明明都已經(jīng)裝好了的,在網(wǎng)上沒(méi)有找到任何有意義的東西。

我的解決方法如下

去下載有依賴問(wèn)題的軟件包自己手動(dòng)更新。
比如rpm
-libs-4.7.1-6.fc12.i386.rpm,然后執(zhí)行:
rpm 
-Uvh --nodeps --force rpm-libs-4.7.1-6.fc12.i386.rpm
進(jìn)行強(qiáng)制安裝即可,以后就不會(huì)出現(xiàn)依賴問(wèn)題了。
至于怎么下載這些更新包,顯然可以去相應(yīng)的源服務(wù)器手動(dòng)下載,如http://mirrors.163.com
更新時(shí)還有一個(gè)sip-devel的包出現(xiàn)conflict的錯(cuò)誤,不知道什么原因,也直接手動(dòng)更新force過(guò)去了。

庫(kù)之間的依賴問(wèn)題應(yīng)該是linux在桌面應(yīng)用不可能超越windows的一大原因吧,源的存在解決了依賴問(wèn)題,但又導(dǎo)致了對(duì)網(wǎng)絡(luò)的依賴性。

runsisi@HUST
posted @ 2010-02-12 12:36 runsisi 閱讀(599) | 評(píng)論 (0)編輯 收藏

和上篇文章一樣,只不過(guò)是適合audacious 2.2版本

diff -Nur audacious-mac-0.3.10.orig/src/mac.cpp audacious-mac-0.3.10.modified/src/mac.cpp
--- audacious-mac-0.3.10.orig/src/mac.cpp    2007-10-15 17:21:33.000000000 +0800
+++ audacious-mac-0.3.10.modified/src/mac.cpp    2010-02-06 21:38:34.276458793 +0800
@@ 
-11,7 +11,7 @@
 #include 
<glib.h>
 
 
const gchar *fmts[] = "mac""ape""apl", NULL };
-
+//modified by runsisi@163.com
 InputPlugin mac_plugin_info =
 
{
     NULL,
@@ 
-21,32 +21,28 @@
     NULL,
     mac_about,
     NULL,
+    NULL,
     FALSE,
+    FALSE,
+    (gchar**)fmts,
+    NULL,
     NULL,
+    mac_is_our_file_from_vfs,
     NULL,
     mac_play_file,
     mac_stop,
     mac_pause,
-    mac_seek, 
-    NULL,
-    NULL,
-    NULL,
-    NULL,
+    mac_seek,
+    mac_mseek,
     NULL,
     NULL,
     NULL,
     NULL,
     NULL,
     mac_file_info_box,
-    NULL,
     mac_get_song_tuple,
     NULL,
-    NULL,
-    mac_is_our_file_from_vfs,
-    (gchar **)fmts,
-    mac_mseek,
 }
;
-
 InputPlugin 
*mac_plugin_infolist[] = &mac_plugin_info, NULL };
 
 SIMPLE_INPUT_PLUGIN(mac_plugin_info, mac_plugin_infolist)
@@ 
-295,7 +291,7 @@
              GTK_SIGNAL_FUNC(gtk_widget_destroyed), 
&aboutbox);
 }
 
-int mac_is_our_file_from_vfs(gchar *filename, VFSFile *file)
+int mac_is_our_file_from_vfs(const gchar *filename, VFSFile *file)
 
{
     gchar magic[
4];
     
const gchar *ext;
@@ 
-383,7 +379,7 @@
     mac_mseek(playback, time 
* 1000);
 }

 
-Tuple *mac_get_song_tuple(gchar *uriname)
+Tuple *mac_get_song_tuple(const gchar *uriname)
 
{
     
int nRetVal = 0;
     
char *filename;
diff 
-Nur audacious-mac-0.3.10.orig/src/mac.h audacious-mac-0.3.10.modified/src/mac.h
--- audacious-mac-0.3.10.orig/src/mac.h    2007-09-08 20:04:35.000000000 +0800
+++ audacious-mac-0.3.10.modified/src/mac.h    2010-02-06 21:16:39.478580938 +0800
@@ 
-44,10 +44,10 @@
 #ifdef __cplusplus
 
extern "C"{
 
#endif
-
+//modified by runsisi@163.com
 static void mac_about();
 
-static int mac_is_our_file_from_vfs(gchar *filename, VFSFile *file);
+static int mac_is_our_file_from_vfs(const gchar *filename, VFSFile *file);
 
 
static void mac_play_file(InputPlayback *data);
 
@@ 
-59,9 +59,9 @@
 
 
static void mac_seek(InputPlayback *data, int time);
 
-static Tuple *mac_get_song_tuple(gchar *filename);
+static Tuple *mac_get_song_tuple(const gchar *filename);
 
-void mac_file_info_box(char *filename);
+void mac_file_info_box(const char *filename);
 
 #ifdef __cplusplus
 }


runsisi@HUST
posted @ 2010-02-08 21:30 runsisi 閱讀(446) | 評(píng)論 (1)編輯 收藏

把ubuntu刪了,太傻瓜了,出了問(wèn)題幾乎從沒(méi)人想過(guò)要自己用下載工具下deb包,只知道apt-get,aptitude,新立得,看著都煩了,windows都沒(méi)這么傻瓜。
重裝了一次fedora,自己到底出了什么問(wèn)題?沒(méi)事喜歡折騰,而起還是fedora用的好好的時(shí)候。現(xiàn)在fedora也有ubuntu的病了,什么都是yum。
說(shuō)實(shí)話fedora遠(yuǎn)遠(yuǎn)沒(méi)有ubuntu穩(wěn)定,這次更新后照樣還是出不來(lái)login screen,而且新的內(nèi)核根本就進(jìn)不去,只能控制臺(tái)登陸,但上次卻可以...

在ubuntu和fedora下一直都是用rhythmbox聽(tīng)歌的,但放整張碟的那種ape是有問(wèn)題的,而且太龐大了,千千靜聽(tīng)多好:)。audacious沒(méi)有那亂七八糟的插件,用搜狗下了半天的源代碼都沒(méi)下全,而且默認(rèn)的皮膚不是一般的丑,幾乎就沒(méi)有看得清楚按鍵的皮膚,制作這種皮膚的人到底出了什么問(wèn)題?
偶然發(fā)現(xiàn)sohu的mirror有rpmfusion的mirror,在那里下了一些插件,但沒(méi)有放ape的插件,只得自己編譯。

編譯audacious-mac-0.3.10出了點(diǎn)小問(wèn)題,應(yīng)該是因?yàn)檫@個(gè)包是針對(duì)audacious低版本的原因,代碼有點(diǎn)小錯(cuò)誤,gcc會(huì)報(bào)初始化參數(shù)太多。
下面是我生成的patch,也可以自己找到mac.cpp這個(gè)文件注釋掉4個(gè)NULL:
注意,該patch只適用于audacious 2.1版本!

diff -rNu audacious-mac-0.3.10.org/src/mac.cpp audacious-mac-0.3.10.modified/src/mac.cpp
--- audacious-mac-0.3.10.org/src/mac.cpp    2010-01-18 12:16:19.983322369 +0800
+++ audacious-mac-0.3.10.modified/src/mac.cpp    2010-01-18 12:13:48.000000000 +0800
@@ 
-12,6 +12,7 @@
 
 
const gchar *fmts[] = { "mac""ape""apl", NULL };
 
+//modified by runsisi@163.com
 InputPlugin mac_plugin_info =
 {
     NULL,
@@ 
-36,12 +37,12 @@
     NULL,
     NULL,
     NULL,
-    NULL,
+    //NULL,
     mac_file_info_box,
-    NULL,
+    //NULL,
     mac_get_song_tuple,
-    NULL,
-    NULL,
+    //NULL,
+    //NULL,
     mac_is_our_file_from_vfs,
     (gchar 
**)fmts,
     mac_mseek,

注意:編譯這個(gè)插件之前需要編譯shared lib of Monkey's Audio Codec,audacious官方提供的mac-port已經(jīng)從sourceforge上撤了,請(qǐng)搜索mac-3.99-u4-b5(某個(gè)chinese的修改更新版)進(jìn)行編譯。
注意:mac-3.99-u4-b5 本身也有一處代碼編譯通不過(guò),請(qǐng)自行修改,只要使用c語(yǔ)言的類型轉(zhuǎn)換(char*)或c++轉(zhuǎn)換const_cast<char*>就可以了。
都可以不考慮使用gstreamer了,smplayer+mplayer解決視頻,audacious解決音頻,比totem+rhythmbox的解決方案好太多了。



runsisi@HUST

posted @ 2010-01-17 15:33 runsisi 閱讀(826) | 評(píng)論 (2)編輯 收藏

昨天編譯的Virtualbox有一個(gè)問(wèn)題,虛擬機(jī)設(shè)置的共享文件夾不能使用,根本就找不到網(wǎng)絡(luò)地址,這可是個(gè)big problem!
沒(méi)有找到有效的解決方法,不知道是我的rpwt還是配置問(wèn)題。不過(guò)我在主機(jī)配置了一個(gè)ftp服務(wù)器,好歹也能把虛擬機(jī)里下的東西傳到主機(jī)上了。另外發(fā)現(xiàn)一個(gè)問(wèn)題,虛擬機(jī)無(wú)法使用橋接方式上網(wǎng),配置成橋接網(wǎng)絡(luò)的話,啟動(dòng)時(shí)會(huì)報(bào)錯(cuò),是另外兩個(gè)模塊沒(méi)有加載的原因,把昨天的腳本修改了一下,如下,將它復(fù)制粘貼保存為vbox,并chmod成可執(zhí)行,覆蓋/etc/init.d下的同名文件即可。

 #!/bin/bash
 
 #by runsisi@
163.com 2010-01-11
 
### BEGIN INIT INFO
# Provides: vbox
# Required
-Start: $syslog $local_fs
# Required
-Stop: $syslog $local_fs
# Default
-Start: 2 3 4 5
# Default
-Stop: 0 1 6
# Short
-Description: The Virtual Box kernel module
# Description: The Virtual Box kernel module
### END INIT INFO

running()
{
    lsmod 
| grep -"$1[^_-]"
}

start() 
{
        echo $
"Starting Virtual Box. "
        
if ! running vboxdrv; then
            
if ! modprobe vboxdrv; then
                echo $
"Failed."
                
return 1
            
else
                chown root.vboxusers 
/dev/vboxdrv
            fi
        fi
        
if ! running vboxnetadp; then
            
if ! modprobe vboxnetadp ; then
                echo  $
"Failed."
                
return 1
            
else
                chown root.vboxusers 
/dev/vboxnetctl
            fi
        fi
        
if ! running vboxnetflt; then
            
if ! modprobe vboxnetflt; then
                echo $
"Failed."
                
return 1
            fi
        fi      
    
        
return 0
}

stop()
{
    
if running vboxnetadp; then
        
if ! rmmod vboxnetadp; then
            echo $
"Cannot unload module vboxnetadp"
            
return 1
        fi
    fi
    
    
if running vboxdrv; then
        
if running vboxnetflt; then
            
if ! rmmod vboxnetflt; then
                echo $
"Cannot unload module vboxnetflt"
                
return 1
            fi
        fi
        
        
if ! rmmod vboxdrv; then
            echo  $
"Cannot unload module vboxdrv"
            
return 1
        fi
    fi
    
        
return 0
}

status()
{
        
if running vboxdrv; then
            
if running vboxnetflt; then
                
if running vboxnetadp; then
                    echo  $
"VirtualBox kernel modules (vboxdrv, vboxnetflt and vboxnetadp) are loaded."
                
else
                    echo  $
"VirtualBox kernel modules (vboxdrv and vboxnetflt) are loaded."
                fi
            
else
                  echo  $
"VirtualBox kernel module is loaded."
            fi
            
return 0
        
else
            echo  $
"VirtualBox kernel module is not loaded."
            
return 3
        fi
}

restart()
{
        stop
        start
}

case $1 in
        start)
                start
        ;;
        stop)
                stop
        ;;
        restart)
                restart
        ;;
        status)
        status                
        ;;
        
*)

        echo 
"Usage: vbox {start|stop|restart|status}"
        exit 
3
esac

exit 
0

 
runsisi@HUST
posted @ 2010-01-12 21:15 runsisi 閱讀(860) | 評(píng)論 (0)編輯 收藏

僅列出標(biāo)題
共5頁(yè): 1 2 3 4 5 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美一区二区三区另类| 国模精品一区二区三区| 欧美日韩伦理在线免费| 国模一区二区三区| 亚洲欧美欧美一区二区三区| 亚洲大胆人体视频| 亚洲自啪免费| 国产精品国产自产拍高清av王其| 亚洲蜜桃精久久久久久久| 久久中文字幕一区二区三区| 亚洲视频专区在线| 欧美激情第3页| 欧美成人午夜剧场免费观看| 欧美亚洲视频一区二区| 欧美日韩综合网| 亚洲美女精品一区| 欧美激情黄色片| 免费视频一区二区三区在线观看| 亚洲国产成人在线| 欧美成人免费在线观看| 国产精品久久7| 在线亚洲免费视频| 欧美日韩综合在线| 夜夜嗨网站十八久久| 亚洲精品美女久久久久| 欧美激情一区二区三区不卡| 亚洲精品国产系列| 亚洲裸体在线观看| 欧美午夜久久久| 欧美亚洲在线视频| 欧美综合国产| 亚洲理论电影网| 亚洲剧情一区二区| 国产精品网站视频| 久久婷婷麻豆| 欧美波霸影院| 亚洲一区久久久| 亚洲性夜色噜噜噜7777| 国产婷婷一区二区| 欧美电影免费观看高清完整版| 欧美成人蜜桃| 午夜精品久久| 美女精品一区| 亚洲宅男天堂在线观看无病毒| 亚洲综合欧美| 亚洲国产一区视频| 亚洲自拍三区| 亚洲九九精品| 欧美一区二区女人| 99精品视频一区二区三区| 亚洲午夜激情| 亚洲三级色网| 久久这里有精品视频| 亚洲人午夜精品免费| 国产精品高潮呻吟久久av黑人| 久久国产精品久久久久久| 久久一区二区视频| 亚洲一区一卡| 美女亚洲精品| 久久九九热re6这里有精品| 欧美护士18xxxxhd| 久久成人国产| 欧美日韩国产影片| 久久久久综合网| 欧美日韩在线观看视频| 欧美成人免费全部观看天天性色| 国产精品久久久久免费a∨| 老司机午夜精品视频在线观看| 欧美日韩一区二区三区在线看| 久久综合99re88久久爱| 国产精品免费电影| 亚洲人成人77777线观看| 在线成人av.com| 午夜精品福利一区二区蜜股av| 日韩午夜av| 免费观看在线综合| 久久午夜影视| 国产亚洲一区精品| 亚洲一区二区在| 中文高清一区| 欧美日韩国产成人高清视频| 亚洲国产欧美一区| 亚洲国产精品热久久| 久久久久九九视频| 久久久久国产一区二区三区| 国产精品一区二区久久精品| 日韩视频在线播放| 一二三区精品| 欧美日韩精品一二三区| 亚洲精品少妇30p| 艳女tv在线观看国产一区| 麻豆精品一区二区av白丝在线| 另类尿喷潮videofree| 国内偷自视频区视频综合| 欧美一区二区三区在线播放| 午夜欧美精品久久久久久久| 国产精品豆花视频| 亚洲午夜久久久久久久久电影网| 亚洲一区免费视频| 国产精品国产精品| 亚洲资源av| 久久免费国产精品1| 影视先锋久久| 欧美jizzhd精品欧美喷水| 亚洲级视频在线观看免费1级| 亚洲精品久久久久久一区二区| 欧美高清视频免费观看| 亚洲精品午夜精品| 亚洲自拍16p| 国产在线视频欧美| 老司机aⅴ在线精品导航| 欧美国产精品一区| 一区二区三区国产精品| 国产精品一区二区你懂得| 久久国产精品久久国产精品| 久久夜色精品国产欧美乱极品| 亚洲电影天堂av| 欧美另类高清视频在线| 亚洲网友自拍| 久久精品亚洲| 亚洲精品在线免费| 亚洲手机视频| 一本久久a久久免费精品不卡| 欧美大片专区| 亚洲少妇最新在线视频| 欧美一区二区视频在线观看| 韩国成人福利片在线播放| 欧美成人官网二区| 亚洲视频欧美视频| 久久综合999| 亚洲视频精品| 国产综合激情| 欧美日一区二区在线观看| 欧美在线免费视频| 亚洲三级性片| 久久久久免费| 亚洲午夜国产成人av电影男同| 国产亚洲网站| 欧美体内谢she精2性欧美| 久久精品国产精品亚洲综合| 亚洲啪啪91| 美女在线一区二区| 午夜国产不卡在线观看视频| 亚洲激情第一区| 国产手机视频一区二区| 欧美精品在线视频| 久久久久久久综合色一本| 妖精成人www高清在线观看| 久久五月婷婷丁香社区| 亚洲综合精品自拍| 一区二区三区在线免费视频| 欧美女人交a| 久热这里只精品99re8久| 午夜精品福利一区二区蜜股av| 亚洲国产精品高清久久久| 久久xxxx精品视频| 午夜一区在线| 一本一本久久| 亚洲日本欧美日韩高观看| 久久天天躁狠狠躁夜夜av| 亚洲欧美国产制服动漫| 亚洲精选成人| 亚洲日本欧美天堂| 在线观看成人一级片| 国产小视频国产精品| 国产精品久久久久999| 欧美理论电影在线播放| 欧美成人亚洲成人| 久久一二三四| 久久国产精品久久久久久电车| 亚洲性图久久| 亚洲一区二区三区乱码aⅴ| 亚洲美女福利视频网站| 亚洲国产中文字幕在线观看| 欧美成人有码| 欧美成年人视频网站| 另类综合日韩欧美亚洲| 快播亚洲色图| 男女视频一区二区| 欧美成人精品激情在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久日韩精品| 鲁鲁狠狠狠7777一区二区| 美国十次成人| 久久一区二区三区av| 久久免费视频这里只有精品| 久久久久免费| 欧美大片91| 亚洲黄色成人| 日韩视频专区| 亚洲午夜未删减在线观看| 亚洲欧美区自拍先锋| 欧美中文字幕视频| 久久青草欧美一区二区三区| 久久午夜精品| 欧美精品v日韩精品v韩国精品v| 欧美激情综合五月色丁香小说| 久久综合99re88久久爱| 一区二区日本视频| 最新中文字幕亚洲|