有两种方法可以做到这一点:
月1日:一个ClassFactory
,并且
第二:一个辅助函数来创建一个指针。
我发现this:
int main()
{
IMath* pIMath;
HRESULT hr;
// 1. Initialize COM Library
CoInitialize(NULL);
// 2. Call CoCreateInstance to get the IMath interface pointer
hr = CoCreateInstance (__uuidof(CMathComp), NULL, CLSCTX_INPROC_SERVER,
__uuidof(IMath), (void**) &pIMath);
if (FAILED(hr))
{
return 0;
}
// 3. Call the interface functions
int sum = pIMath->Add(1, 3);
printf("Sum = %d \n", sum);
int sub = pIMath->Sub(4, 3);
printf("Sub = %d \n", sub);
// 4. Release the interface pointer if you are done
pIMath->Release();
// 5. Un-Initialize COM Library
CoUninitialize();
return 0;
}
另见MSDN:
HRESULT CoCreateInstance(
_In_ REFCLSID rclsid,
_In_ LPUNKNOWN pUnkOuter,
_In_ DWORD dwClsContext,
_In_ REFIID riid,
_Out_ LPVOID *ppv
);
如果你能收集从OLEVIEW的CLSID
使用它,否则就必须有这个文件。您不能在不暴露ist CLSID
的情况下提供组件。
这是不可能的。一个接口由一个coclass实现。您必须先创建类对象,然后才能调用QueryInterface()来获取接口指针。创建对象需要知道CLSID或ProgId。请联系此类型库的供应商或作者以寻求帮助。 –