随笔 - 64, 文章 - 11, 评论 - 12, 引用 - 0
数据加载中……

2013-3 <上>疑问

13日:
            一个使用ADO的程序,在程序中使用了_IConnectionPtr conPtr; conPtr->CreateInstance("ADODB.Connection")创建连接。程序在win7上编译链接后,
      在win7上运行没有问题,然而在win 2008 server上跑时,创建不了数据连接。返回的错误码表示不支持相应的接口。同样的代码拿到win2008上编译链接后在win7,
      winxp上都能运行。
      分析:
      由错误码可以得知是查询接口时失败,可以推出它是这样来导入ado组件的。
      #import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF","adoEOF")
      由win 2008编译后可以在xp,win7 win2008运行,推出win2008的连接GUID版本是旧的。并且2008不支持新的版本。
      解决办法:
         简单的方法,从win2008 的相应目录把msado15.dll拷到某个地方,改写上面的import是从相应的文件夹导入,再编译链接即可。
         改代码的方法:查出win 2008连接IID={00000550-0000-0010-8000-00aa006d2ea4},有了这个IID我们改代码的方法就有多种了。这里介绍封一个函数的方式。
         这种方式其实有缺点,我们信奉接口是稳定的。如果担心,应采用上述最简单的办法。
           
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,反地来b < a也可能成立的一种比较关系。STL中的排序容器中不能有弱序关系,当弱序关系存在于STL中的排序容器中时会产生错误。举个例子下面的比较就
      是弱序关系,if(a.year > b.year) return false; if(a.month > b.month) return false; ......。如果应用于容器的排序就会出现错误。
25日:
      关于对时的问题,对是的服务器没有联网并且不对,或者虽然联网了但是时区和客户端不统一时。客户端和服务端对时,如果此时客户端联网。会造成客户端的时间走的过快或者过慢。
29日:
      在ubuntu环境中,到linux kernel源码目录行make menuconfig提示找不到curses.h头文件,可以看出是没有安装相应的库。
         sudo apt-get install libncurses5-dev libncursesw5-dev 安装好库之后,再输行Linux内核配置工具成。

posted on 2013-03-13 17:28 Robertxiao 阅读(1197) 评论(0)  编辑 收藏 引用 所属分类: 问题集锦


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理