![](/img/trans.png)
[英]How to build a C++ project using mongoose in Visual Studio 2015
[英]How can I build a C++ project in Visual Studio 2015 with circular dependencies?
首先,這是我繼承的舊代碼,我希望有一天可以清理它並使之完美,但是今天我不能這樣做。 因此,我要求不要給出諸如“重寫整個內容以便沒有循環依賴項”之類的答案。
我有44個項目的解決方案。 大多數項目構建DLL,少數構建可執行文件。 有多個項目依賴於另一個項目,該項目以某種方式要求第一個。 有些就像A要求B.lib和B要求A.lib一樣簡單,而另一些則是較長的鏈,這些鏈又會環回。
當我繼承代碼時,它並不干凈,並且源代碼中仍然有舊的構建文件,即.LIB文件。 在不刪除這些.LIB文件的情況下,所有44個項目都可以構建,並且所有舊的.LIB文件都將被新建的文件替換。 這告訴我,如果我第二次進行構建,則不會使用任何舊的.LIB,現在我的所有可交付成果完全是從當前來源生成的。
這給我帶來了一個問題:我想從版本控制中清除所有無源文件,但是如果這樣做,我將無法再構建項目。
為了進一步澄清,構建DLL的項目將作為一個中間步驟創建一個.LIB文件,並將這些文件復制到每個項目的“附加庫目錄”屬性和所需的各個.LIB文件中列出的公用文件夾中。贈予項目位於該項目的“其他依賴項”屬性中。
編輯:我不打算對代碼進行大修。 我知道創建了所有項目所需的所有目標文件。 我也知道這種結構不是最佳的。 但是,我確實相信,如果鏈接器知道在哪里查看,它可以找到所需的所有內容。
僅從A中提取B所需的部分到新的DLL“ C”中。 然后使兩個A都依賴於B和C,而B僅取決於C。
這並非易事,而只是一次不斷地提取一點點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.