3
我試圖將我的程序延遲綁定到DLL。
我知道如何導入它的方法,但在一個它的頭文件,我有這樣一個定義:使用「extern」定義的變量對庫進行後期綁定
EXTERN_C const IID SomeVariable;
我如何引用這個變量在我的計劃沒有得到「無法解析的外部符號」錯誤?
我試圖將我的程序延遲綁定到DLL。
我知道如何導入它的方法,但在一個它的頭文件,我有這樣一個定義:使用「extern」定義的變量對庫進行後期綁定
EXTERN_C const IID SomeVariable;
我如何引用這個變量在我的計劃沒有得到「無法解析的外部符號」錯誤?
您可以使用GetProcAddress獲取函數或變量的地址。
請參閱GetProcAddr()在MSDN。
const IID *idp = reinterpret_cast<const IID *>(GetProcAddr(hLibrary, "SomeVariable"));
現在,你可以通過指針指SomeVariable
- 就像你可以通過自己的指針指向功能。當然,您應該在實際使用它之前檢查指針是否爲空。
你能詳細說明你正在爲函數做的後期綁定嗎? – 2012-01-07 20:24:49
我知道函數的簽名,所以我定義了一個函數指針來匹配它。然後,我只需使用DLL句柄和函數的名稱調用「GetProcAddress」即可。我將結果賦給我的函數指針的一個實例,然後我可以使用它作爲任何其他函數。 – Idov 2012-01-07 20:28:55
賠率非常高,這個變量沒有被導出。使用DLL上的dumpbin.exe/exports來仔細檢查。 – 2012-01-07 22:46:11