使用QueryInterface 出错?
简单的接口参数调用。
Client端
#import "..\msado15.dll" no_namespace rename("EOF","adoEOF")
#import "..\myDll.dll" no_namespace
客户端调用myDll中的接口IDBMan的Test([in]LPSTR strSql,IUnknown* Record);
{
IDBManPtr myDB;
myDB.CreateInstance(__uuidof(myDll));
_RecordsetPtr myRecord;
myRecord.CreateInstance(__uuidof(Recordset));
myRecord->CursorLocation=adUseClient;
myDB->Test("select * from myTable",(IUnknown*)(&myRecord));
}
COM 端
STDMETHODIMP CDBOperator::Test(LPSTR strSql,IUnknown* Record)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
_RecordsetPtr pRecord;
pRecord.CreateInstance(__uuidof(Recordset));
Record->QueryInterface(pRecord.GetIID(),(void**)(&pRecord));//调用queryInterface时出错。
// pRecord->Open(strSql,(IDispatch*)m_pConnect,adOpenDynamic,adLockOptimistic,adCmdText);
//本段代码的本意是通过传过来的sql操作语句,和记录集对象,在COM中实现对记录集的统一执行,最终返回一结果记录集。
return S_OK;
}
//////////////////////////////////////////////////////////////////////
//程序的意图:
自已写一个接口,其主要是调用msado15.dll中的三个对数据库操作的接口,通过自已的方法,相当于一个公有模块,使客户端直接调用我的方法,即可得到对数据库的访问。且客户端不用导入msado15.dll,直接导入我的动态库即可,希望大家多给点方案及解决意见。