Зависимость EXE и DLL - Когда перекомпилировать EXE? - PullRequest
0 голосов
/ 25 октября 2010

У меня есть следующие определения классов в 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?И стоит ли перекомпилировать A.exe, даже если я изменил размер класса C?

Ответы [ 2 ]

2 голосов
/ 25 октября 2010

Вы должны перекомпилировать a.exe каждый раз, когда public интерфейс b.dll изменяется (не только размер, также, когда члены переупорядочиваются, личные / публичные изменения [это также влияет на порядок членов, безбыть видимым из исходного кода], ...).Если C является частью общедоступного интерфейса, то вам необходимо перекомпилировать A.exe также каждый раз, когда C изменяется.Вам не нужно перекомпилировать a.exe, если C является частным классом b.dll, на который нет ссылки из a.exe.Также обратите внимание, что на C можно ссылаться косвенно, например, когда ваш B::funx является встроенной функцией, поскольку тогда экземпляр C может иметь место в коде A.exe.

Как рутбольшой палец, когда вы заменяете определение C объявлением class C; и все еще можете скомпилировать A.exe, вам не нужно заботиться о C.Но я бы предпочел каждый раз компилировать A.exe, поскольку, когда в какой-то момент в будущем код изменится, так что это условие не будет выполнено, вам будет сложно отлаживать ошибки.

2 голосов
/ 25 октября 2010

Вам следует перекомпилировать, если вы измените размер класса B

Если размер B не изменяется при изменении размера класса C, вам не нужно перекомпилировать A.

Кажется, B не наследуется от C, поэтому размер B не изменяется.

- Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...