昨天去聽(tīng)了超圖的校園宣講會(huì),無(wú)非都是宣揚(yáng)些本公司的現(xiàn)狀,未來(lái)的發(fā)展,以及招聘人員來(lái)到本公司后的待遇等等。我沒(méi)太自己關(guān)注這些,大部分時(shí)間是在看新買(mǎi)的Multithreading Appinlication in Windows,最近很愛(ài)看書(shū)。不過(guò)宣講人說(shuō)了句話,讓我印象很是深刻,他說(shuō),時(shí)不時(shí)就該做些有成就的事,否則時(shí)間長(zhǎng)了,人都會(huì)頹廢的,原話不是這么說(shuō)的,大意而已。我覺(jué)得這句話很有道理,在學(xué)校這么長(zhǎng)時(shí)間,從來(lái)沒(méi)覺(jué)得什么事讓自己感覺(jué)很有成就;工作了這么久也是一樣,天天想著完成任務(wù)就好,從來(lái)沒(méi)想過(guò)應(yīng)該超前完成點(diǎn)任務(wù)。大部分僅僅是為了維持生活現(xiàn)狀,得過(guò)且過(guò)而已。時(shí)間長(zhǎng)了,反而覺(jué)得很是無(wú)聊,沒(méi)有什么新意。
受這句話的啟發(fā),我決定今天就該做點(diǎn)有成就感的事情,把前兩天拖拉的工作完成了。其實(shí)任務(wù)說(shuō)起來(lái)很簡(jiǎn)單:項(xiàng)目在開(kāi)發(fā)中用到了sqlite3.dll,不過(guò)在引用這個(gè)dll時(shí),項(xiàng)目中用的是在project、setting 中設(shè)置的方式,(dll調(diào)用分兩種,不清楚這種調(diào)用是隱式的還是顯示的,沒(méi)分清),所以項(xiàng)目程序只有在sqlite3.dll 存在的情況下,才可以運(yùn)行,否則運(yùn)行不起來(lái),會(huì)報(bào)錯(cuò)。 項(xiàng)目中我的任務(wù)是做升級(jí)程序Updater.exe,在升級(jí)程序中也需要升級(jí)數(shù)據(jù)庫(kù),因此也使用了sqlite3.dll,也是按的前面的調(diào)用方式。這種調(diào)用方式帶來(lái)的弊端是updater.exe在升級(jí)主程序時(shí),可能會(huì)出現(xiàn)問(wèn)題,sqlite3.dll的升級(jí)可能失?。ㄕ诒籾pdater.exe使用)。我曾想試著按另外一種方式調(diào)用sqlite3.dll導(dǎo)出的函數(shù),但終究覺(jué)得導(dǎo)出函數(shù)的方式很復(fù)雜,而且sqlite3的導(dǎo)出函數(shù)封裝的不好,寫(xiě)起來(lái)很費(fèi)勁(這之前由于sqlite3.h 封裝不好,我們項(xiàng)目組一直引用它的一個(gè)封裝類(lèi)CppSqlite3)。
如果按著sqlite3 導(dǎo)出函數(shù)(LoadLibrary,F(xiàn)reeLibrary)這種方式來(lái)做的話,問(wèn)題來(lái)了:
1 導(dǎo)出函數(shù)的指針必須拿到
2 以前寫(xiě)的代碼引用到CppSqlite3 的最好不要影響到
想了很久,終于我想到一個(gè)方法來(lái)解決這個(gè)問(wèn)題,遂開(kāi)始實(shí)施(后面在描述解決過(guò)程吧),可是由于導(dǎo)出函數(shù)太多,寫(xiě)的我都快吐血了,一直到了早上五點(diǎn),還沒(méi)全部弄完,實(shí)在是堅(jiān)持不住了,就想趕緊睡會(huì)吧,一會(huì)還得上班呢。遂倒頭睡去,沒(méi)成想在睜開(kāi)眼睛時(shí),已是8點(diǎn)多了。