我在Visual C++ 2008中構建了一個DLL,並且我希望將運行時靜態鏈接到DLL中。所以我進入了項目選項並將運行時庫設置爲Multi-threaded (/MT)
。這在過去一直適用於其他項目。但是當我建立這個時,我最終還是會看到Dependency Walker在列表中顯示MSVCR90.dll。即使設置了/ MT選項,爲什麼我會看到MSVCR90依賴項?
任何人都知道可能會導致什麼?
我在Visual C++ 2008中構建了一個DLL,並且我希望將運行時靜態鏈接到DLL中。所以我進入了項目選項並將運行時庫設置爲Multi-threaded (/MT)
。這在過去一直適用於其他項目。但是當我建立這個時,我最終還是會看到Dependency Walker在列表中顯示MSVCR90.dll。即使設置了/ MT選項,爲什麼我會看到MSVCR90依賴項?
任何人都知道可能會導致什麼?
項目+屬性,鏈接器,命令行。添加/ verbose選項。 Build +重建。輸出窗口顯示鏈接器搜索符號。注意msvcrt.lib,這是依賴於msvcr90.dll
這是一個典型的原因是鏈接.lib具有一個或多個編譯/ MD的.obj文件。對msvcrt.lib的依賴注入了#pragma註釋(lib,msvcrt.lib)指令。這會告訴鏈接程序搜索msvcrt.lib,而不顯式指定它作爲鏈接程序,輸入,附加依賴項中的依賴項。
謝謝,原來是這樣。 –
顯然,加載您的DLL的EXE不是由相同的選項構建的。或者另一個加載的DLL,它只需要一個。 –
@Hank:這裏不適用。我在Dependency Walker中查看它,它顯示在樹的頂層,而不是在另一個加載的DLL下。 –
'MSVCR90'中的導出是你的DLL依賴的嗎? –