簡體   English   中英

EXE和DLL依賴性-何時重新編譯EXE?

[英]EXE and DLL dependency - When to recompile the EXE?

我在exe和dll中具有以下類定義。

// A.exe: 
Class A { void fun() { B* b = new B(); b.funx(); }

// B.dll:
Class B { void funx (void) { C* y = new C(); y.funy(); }
Class C { void funy() { } }

可以說我更改了B類的大小,是否應該重新編譯A.exe? 即使更改C類的大小,我也應該重新編譯A.exe嗎?

如果更改B類的大小,則應重新編譯

如果B的大小沒有因更改C類的大小而改變,則無需重新編譯A。

看來,B不是從C繼承的,所以B的大小不會改變。

- 干杯

每次b.dll的公共接口發生更改時,您都必須重新編譯a.exe(不僅是大小,還包括對成員進行重新排序時的私有/公共更改[這也會影響成員的排序,而從源代碼中看不到)。 ..)。 如果C是公共接口的一部分,那么每次C更改時,您還需要重新編譯A.exe。 僅當C是b.dll的私有類時才需要重新編譯a.exe,而a.exe卻沒有引用該私有類。 還要注意,例如當您的B::funx是內聯函數時,可以間接引用C ,因為這樣C的實例化可以在A.exe的代碼中進行。

憑經驗,將C的定義替換為聲明class C; ,並且仍然可以編譯A.exe,您無需關心C 但是我寧願建議每次都編譯A.exe,因為將來某時代碼更改,以致不滿足此條件,您將很難調試錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM