2012-01-07 37 views
3

我試圖將我的程序延遲綁定到DLL。
我知道如何導入它的方法,但在一個它的頭文件,我有這樣一個定義:使用「extern」定義的變量對庫進行後期綁定

EXTERN_C const IID SomeVariable; 

我如何引用這個變量在我的計劃沒有得到「無法解析的外部符號」錯誤?

+0

你能詳細說明你正在爲函數做的後期綁定嗎? – 2012-01-07 20:24:49

+0

我知道函數的簽名,所以我定義了一個函數指針來匹配它。然後,我只需使用DLL句柄和函數的名稱調用「GetProcAddress」即可。我將結果賦給我的函數指針的一個實例,然後我可以使用它作爲任何其他函數。 – Idov 2012-01-07 20:28:55

+1

賠率非常高,這個變量沒有被導出。使用DLL上的dumpbin.exe/exports來仔細檢查。 – 2012-01-07 22:46:11

回答

2

您可以使用GetProcAddress獲取函數或變量的地址。

1

請參閱GetProcAddr()在MSDN。

const IID *idp = reinterpret_cast<const IID *>(GetProcAddr(hLibrary, "SomeVariable")); 

現在,你可以通過指針指SomeVariable - 就像你可以通過自己的指針指向功能。當然,您應該在實際使用它之前檢查指針是否爲空。