在windows下编译后的webkit dll使用的是com组件技术,所以使用webkit dll中的api传统的方法不行,必须使用com组件技术,如下:
/*使用全球唯一标识符(GUID)*/
typedef _com_ptr_t<_com_IIID<IWebView,&__uuidof(IWebView)>> IWebViewPtr;
IWebViewPtr gWebView;
int main()
{
IWebView *px = NULL;
/*webkit使用WebKitCreateInstance函数对类厂技术及CreateInstance函数进行了封装, 对CoCreateInstance技术进行了升级,CoCreateInstance函数具有不灵活性, 他没有给客户提供一种能够控制组件穿件过程的方法*/
HRESULThr = WebKitCreateInstance(CLSID_WebView, 0, IID_IWebView, (void **)&px); //CLSID_WebView为组件GUID、IID_IWebView为接口的GUID
if (FAILED(hr))
return-1;
IWebView*px2 = NULL;
/*测试:使用客户已经拥有的接口再次获得已经拥有的接口*/
hr= px->QueryInterface(IID_IWebView, (void **)&px2);
if (px != px2)
{
cout<< "!=" << endl;
}
else
{
cout<< "==" << endl;
}
if (FAILED(hr))
{
return-1;
}
else
{
px2->Release();
}
return0;
}