Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
没有找到C++的内部接口接口标识符_C++_Winapi_Com_Atl - Fatal编程技术网

没有找到C++的内部接口接口标识符

没有找到C++的内部接口接口标识符,c++,winapi,com,atl,C++,Winapi,Com,Atl,我有以下课程 class SearchCompleteFunction : public ISearchCompletedCallback { public: SearchCompleteFunction() { } ~SearchCompleteFunction() { } virtual HRESULT STDMETHODCALLTYPE Invoke( ISearchJob *search

我有以下课程

class SearchCompleteFunction : public ISearchCompletedCallback
    {

    public:

        SearchCompleteFunction()
        { }
        ~SearchCompleteFunction()
        { }

        virtual HRESULT STDMETHODCALLTYPE Invoke( ISearchJob *searchJob, ISearchCompletedCallbackArgs *callbackArgs )
        {
            std::cout << "Invoked" << std::endl;
            return S_OK;
        }
    };

// Now I am trying to BeginSearch
    {
        CComObject<SearchCompleteFunction>* searchCompleteFunc = nullptr;
        HRESULT hres = CComObject<SearchCompleteFunction>::CreateInstance( &searchCompleteFunc );
        CComPtr<ISearchJob> searchJob = nullptr;

        hr = ptrUpdateSearcher->BeginSearch(_bstr_t(bstrCriteria.c_str()), searchCompleteFunc, CComVariant(L"Scanning"), &searchJob);
    }
但后来我犯了10多个错误

请帮助我成功编译和测试这个。 我感谢你的帮助

您还需要从CComObjectRootEx继承。基本上,您需要按照ATL教程开始使用ATL COM对象

:
你忘了问问题了。2您的代码段中没有\u InternalQueryInterface。@nada 1完成,对不起,我教过这是显而易见的。2我的代码中没有任何_InternalQueryInterface,当我双击错误时,它会将我带到atlcom.h headerSounds,就像你忘记包含头一样,但我不能确定,因为你的示例本身是不可验证的。这是一个非常基本的问题,当BEGIN _COM_MAP声明丢失时,你会得到这个编译错误。你不能没有它,即使它只生成一个编译错误。添加映射后,它现在会生成更多错误,这一点也不奇怪,编译器现在可以验证您是否正确实现了接口。如果你不告诉我们你看到了什么,很难帮助你。
BEGIN_COM_MAP( SearchCompleteFunction )
    COM_INTERFACE_ENTRY( ISearchCompletedCallback )
END_COM_MAP()
class ATL_NO_VTABLE CFoo : 
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CFoo, &CLSID_Foo>,
    public IDispatchImpl<IFoo, &IID_IFoo, &LIBID_TESTLib>
{
public:
    CFoo()
    {
    }

DECLARE_REGISTRY_RESOURCEID(IDR_FOO)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CFoo)
    COM_INTERFACE_ENTRY(IFoo)
    COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()

// IFoo
...