我正在運行一個進程,其中COMCTL32.DLL
被加載兩次,一次是5.82.7601.17514版本,一次是6.10.7601.17514版本。舊版本由程序鏈接的一些舊式DLL加載,另一個版本由較新的DLL加載。當COMCTL32.DLL被加載兩次時GetModuleHandle和GetProcAddress
如果我使用GetModuleHandle (L"COMCTL32.DLL")
我無法控制得到解決的DLL。
當我呼叫GetProcAddress
達到,例如TaskDialogIndirect
,我得到一個空指針回來,這當然是因爲我回到了傳統DLL的句柄。
那麼,是否有一些方法可以在加載這兩個DLL時獲取地址,例如TaskDialogIndirect
。
如果不是,我可以以某種方式確保該過程加載6.10版本而不是5.82,希望我們的傳統DLL可以在COMCTL32
的較新版本上正常工作?
可能的快速解決方法是使用File + Open + File在Visual Studio中打開DLL的副本並刪除清單資源。 –
最後,我們通過確定應用程序使用2new「外觀」來解決問題,而不是刪除它,但是新外觀(COMCTL32 v6)有幾個兼容性問題 –