2009-12-23 92 views
2

我有一個(本機C++)visual studio解決方案,其中包含多個項目,其中一些是DLL。項目之間的依賴關係被輸入到「項目依賴項」中。無論何時修改和重新構建DLL,不管這些更改是否影響其他項目(也就是說,只有實現而不是聲明發生更改),整個依賴關係樹都將重新鏈接(不重新編譯,但是)每當一個依賴項目被構建或測試爲構建候選時,這是完全不必要的。如果我在整個重新鏈接過程之前從外部VS運行依賴項目,它將按原樣運行。Visual Studio DLL依賴項導致不必要的重新鏈接

由於項目很大,這整個不必要的過程需要大量的時間。任何方式來解決這種行爲?

回答

-1

那麼這是一個典型的VS行爲,當你「重新構建解決方案」時......要克服這個「構建」變化的組件,而不是「重建」它,你應該沒問題。或者你可以卸載你知道他們不會被改變的項目/ DLL,並且在重建VS時只會構建加載的項目並忽略未加載的項目。

我不知道,當你說你是什麼意思「VS重新連接,而不是重新編譯」,當你重建一個解決方案,所有項目都根據依賴關係樹編譯和鏈接...

3

如果我明白你在說什麼,那麼你已經重建了一個DLL,並抱怨說它正在重新鏈接使用該DLL的任何東西?

這聽起來對我來說是正確的,如果你改變了一個DLL,那麼你必須重新鏈接任何使用它的東西,因爲它依賴於它。我知道你可以改變DLL裏面的實現,如果你仔細地保持接口相同,那麼你就不必重新鏈接它,但像大多數構建工具一樣,VC++只會在更改時間和LIB的時間它的文件肯定已經改變了,所以唯一安全的事情就是重新鏈接。

如果不希望這種情況發生,那麼你可能需要一個項目鏈接到庫的固定副本的DLL,而不是一個從項目