有兩種方法可以做到這一點:
月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。請聯繫此類型庫的供應商或作者以尋求幫助。 –