2011-09-22 56 views
4

這可能是一個新手問題,但我只是不知道!要在DLL中使用可能不存在於系統中的函數,我可以使用LoadLibrary,然後使用GetProcAddress。但是我怎樣才能爲COM接口做同樣的事情呢?我可以包含聲明的頭文件,IID等......但我不想使用#pragma comment(lib, "blabla.lib")與附帶的庫鏈接。使用COM接口而沒有靜態鏈接到庫

(我試圖使用WICImagingFactory接口,這需要鏈接到的windowscodecs.lib編譯)

感謝

回答

5

有沒有必要對連接windowscodecs.lib鬥爭。鏈接到它不會導致隱式鏈接,因爲你會得到一個非COM庫。

您仍然需要像調用任何COM對象一樣調用CoCreateInstance()。將其視爲運行時綁定等效於GetProcAddress

+0

哈!你是對的,我將'C:\ Windows \ System32 \ WindowsCodecs.dll'改名爲'C:\ Windows \ System32 \ WindowsCodecs.bak'(取得所有權後),我的應用程序運行正常,除了'CoCreateInstance'失敗,是沒有問題的,我有一些回退機制,以良好的舊GDI功能:)謝謝堆! – demorge

+0

你可以通過更新CLSID的註冊表項來使CoCreateInstance成功,指向WindowsCodecs.bak :) –

+0

好吧,知道了,但我只是測試當WindowsCodecs.dll沒有找到時我的應用程序會如何響應,完全刪除它如此粗糙;) – demorge