13日:
一個(gè)使用ADO的程序,在程序中使用了_IConnectionPtr conPtr; conPtr->CreateInstance("ADODB.Connection")創(chuàng)建連接。程序在win7上編譯鏈接后,
在win7上運(yùn)行沒(méi)有問(wèn)題,然而在win 2008 server上跑時(shí),創(chuàng)建不了數(shù)據(jù)連接。返回的錯(cuò)誤碼表示不支持相應(yīng)的接口。同樣的代碼拿到win2008上編譯鏈接后在win7,
winxp上都能運(yùn)行。
分析:
由錯(cuò)誤碼可以得知是查詢(xún)接口時(shí)失敗,可以推出它是這樣來(lái)導(dǎo)入ado組件的。
#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF")
由win 2008編譯后可以在xp,win7 win2008運(yùn)行,推出win2008的連接GUID版本是舊的。并且2008不支持新的版本。
解決辦法:
簡(jiǎn)單的方法,從win2008 的相應(yīng)目錄把msado15.dll拷到某個(gè)地方,改寫(xiě)上面的import是從相應(yīng)的文件夾導(dǎo)入,再編譯鏈接即可。
改代碼的方法:查出win 2008連接IID={00000550-0000-0010-8000-00aa006d2ea4},有了這個(gè)IID我們改代碼的方法就有多種了。這里介紹封一個(gè)函數(shù)的方式。
這種方式其實(shí)有缺點(diǎn),我們信奉接口是穩(wěn)定的。如果擔(dān)心,應(yīng)采用上述最簡(jiǎn)單的辦法。
HRESULT OriginalCreateConnection(_Connection *pCon)


{
HRESULT hr = 0L;
pCon = NULL;
CComPtr<IClassFactory> cfPtr;
CComPtr<IUnknown> unPtr;
CLSID clsid;
IID iidCon;

CLSIDFromProgID(L"ADODB.Connection", &clsid);
if(FAILED(hr = CoGetClassObject(clsid, CLSCTX_ALL, 0, IID_IClassFactory, (void **)&cfPtr)))

{
return hr;
}
if(FAILED(hr = cfPtr->CreateInstance(0, IID_IUnknown, (void **)&unPtr)))

{
return hr;
}
IIDFromString(L"{00000550-0000-0010-8000-00aa006d2ea4}",&iidCon);
if(FAILED(hr == unPtr->QueryInterface(iidCon, (void **)&pCon)))

{
pCon = NULL;
return hr;
}
return hr;
} 24日:
弱序在這里是指a < b,反地來(lái)b < a也可能成立的一種比較關(guān)系。STL中的排序容器中不能有弱序關(guān)系,當(dāng)弱序關(guān)系存在于STL中的排序容器中時(shí)會(huì)產(chǎn)生錯(cuò)誤。舉個(gè)例子下面的比較就
是弱序關(guān)系,if(a.year > b.year) return false; if(a.month > b.month) return false; ......。如果應(yīng)用于容器的排序就會(huì)出現(xiàn)錯(cuò)誤。
25日:
關(guān)于對(duì)時(shí)的問(wèn)題,對(duì)是的服務(wù)器沒(méi)有聯(lián)網(wǎng)并且不對(duì),或者雖然聯(lián)網(wǎng)了但是時(shí)區(qū)和客戶(hù)端不統(tǒng)一時(shí)。客戶(hù)端和服務(wù)端對(duì)時(shí),如果此時(shí)客戶(hù)端聯(lián)網(wǎng)。會(huì)造成客戶(hù)端的時(shí)間走的過(guò)快或者過(guò)慢。
29日:
在ubuntu環(huán)境中,到linux kernel源碼目錄行make menuconfig提示找不到curses.h頭文件,可以看出是沒(méi)有安裝相應(yīng)的庫(kù)。
sudo apt-get install libncurses5-dev libncursesw5-dev 安裝好庫(kù)之后,再輸行Linux內(nèi)核配置工具成。