У меня такая ситуация:
Есть проект статической либы и проект дллки, которая линкуется с этой либой.
Меняю прототип функции в либе, запускаю билд,получаю новую лию. После чего запускаю билд дллки, но она не определяет, что прототип ф-ии изменился и не перекомпилируется, тем самым остается со старой либой.
Конечно же, можно запустить rebuild или clean/build(это мне не подходит), но в Visual Studio 6 этого не требуется, нажимаем Build, и студия сама определяет, что были изменения и перекомпилирует то, что нужно.
Другими словами, Build в Visual Studio 2005/2008 не видит изменения, если они былли только в хедерах.
Должно же это как-то решатся? Может в настройках что есть?
П.С. Precompiled Headers в проекте не используются.
Re: Visual studion 2005/2008 проблеммы с линковкой
Здравствуйте, Аноним, Вы писали:
А>У меня такая ситуация: А>Есть проект статической либы и проект дллки, которая линкуется с этой либой. А>Меняю прототип функции в либе, запускаю билд,получаю новую лию. После чего запускаю билд дллки, но она не определяет, что прототип ф-ии изменился и не перекомпилируется, тем самым остается со старой либой. А>Конечно же, можно запустить rebuild или clean/build(это мне не подходит), но в Visual Studio 6 этого не требуется, нажимаем Build, и студия сама определяет, что были изменения и перекомпилирует то, что нужно. А>Другими словами, Build в Visual Studio 2005/2008 не видит изменения, если они былли только в хедерах. А>Должно же это как-то решатся? Может в настройках что есть?
Вообще решается оно не всегда, я совершенно уверен что в студии есть баги на эту тему. Но, во многих случаях дело не в багах студии, а например в том что хедер в проект не включен. Или зависимость от либы задана через опцию линкера, а не через зависимости между проектами.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re: Visual studion 2005/2008 проблеммы с линковкой
Здравствуйте, <Аноним>, Вы писали:
А>У меня такая ситуация: А>Есть проект статической либы и проект дллки, которая линкуется с этой либой.
Очень надеюсь, что оба проекта у тебя в одном воркспейсе?
Если да — то установи зависимости между проектами (меню Project > Project Dependencies).
Если нет, — ну так помести проекты в один воркспейс, и см. предыдущий пункт.
Если нет и нельзя — тогда придётся шаманить.
А>Другими словами, Build в Visual Studio 2005/2008 не видит изменения, если они былли только в хедерах.
По сути, хедеры отслеживаются обоими проектами (неявно принадлежат этим проектам). Естественно, что компилятор отслеживает, когда дата исходника новее даты объектника.
А>Должно же это как-то решатся? Может в настройках что есть?
Project Dependencies.
Заодно — нет нужды прописывать либу в настройках линкера у проекта длл, или в #pragma comment(lib).
А>П.С. Precompiled Headers в проекте не используются.
Это не влияет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Перекуём баги на фичи!
Re[2]: Visual studion 2005/2008 проблеммы с линковкой
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, <Аноним>, Вы писали:
Нашел более простой вариант воспроизведения проблеммы:
Один проект(в моем случаее, длл), несколько хедеров, несколько спп. Компилируем, все нормально. Меняем прототип ф-ии в хедере, потом билд. Результат — изменения в хедере не занюхал, проект не перекомпилировался.
Похоже на баг в студии, но вроде уже пять лет прошло, неужели не пофиксили?
Про это, вообще, никакой инфрормации нет. Если такое поведение студии Микрософ счетает нормальным, должна же быть хоть какая-та заметка по этому поводу!?
Неужели за пять то лет никто не заметил, никто им не написал?
«Мы с тобой в чудеса не верим, Оттого их у нас не бывает…»
Re[3]: Visual studion 2005/2008 проблеммы с линковкой
Здравствуйте, meerius, Вы писали:
M>Здравствуйте, Кодт, Вы писали:
К>>Здравствуйте, <Аноним>, Вы писали:
M>Нашел более простой вариант воспроизведения проблеммы: M>Один проект(в моем случаее, длл), несколько хедеров,
Хедеры в проект включены ? В дереве проекта они есть ? Можно ведь и без этого, #include все равно сработает, но тогда откуда студии знать, что изменения этого файла .h требуют перекомпиляции ?
With best regards
Pavel Dvorkin
Re[3]: Visual studion 2005/2008 проблеммы с линковкой
Здравствуйте, meerius, Вы писали:
M>Нашел более простой вариант воспроизведения проблеммы: M>Один проект(в моем случаее, длл), несколько хедеров, несколько спп. Компилируем, все нормально. Меняем прототип ф-ии в хедере, потом билд. Результат — изменения в хедере не занюхал, проект не перекомпилировался. M>Похоже на баг в студии, но вроде уже пять лет прошло, неужели не пофиксили? M>Про это, вообще, никакой инфрормации нет. Если такое поведение студии Микрософ счетает нормальным, должна же быть хоть какая-та заметка по этому поводу!? M>Неужели за пять то лет никто не заметил, никто им не написал?
Сделай, пожалуйста, дистиллированный пример и опубликуй (зип исходников, включая .vcproj и .sln)
Я склонен подозревать проблемы скорее у тебя в проекте (что-нибудь неправильно сконфигурировано) или на машине (некорректные даты у файлов, например), чем у студии.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Перекуём баги на фичи!
Re[3]: Visual studion 2005/2008 проблеммы с линковкой
Здравствуйте, meerius, Вы писали:
M>Здравствуйте, Кодт, Вы писали:
К>>Здравствуйте, <Аноним>, Вы писали:
M>Нашел более простой вариант воспроизведения проблеммы: M>Один проект(в моем случаее, длл), несколько хедеров, несколько спп. Компилируем, все нормально. Меняем прототип ф-ии в хедере, потом билд. Результат — изменения в хедере не занюхал, проект не перекомпилировался. M>Похоже на баг в студии, но вроде уже пять лет прошло, неужели не пофиксили? M>Про это, вообще, никакой инфрормации нет. Если такое поведение студии Микрософ счетает нормальным, должна же быть хоть какая-та заметка по этому поводу!? M>Неужели за пять то лет никто не заметил, никто им не написал?
Отключи свойства_проекта/C++/Code Generation/Minimal Rebuild. Когда эта опция включена, некоторые изменения в заголовках (а иногда и в .cpp-шниках!) не обнаруживаются. Последний раз убил из-за этого три часа на отладку, прежде чем догадался проверить ассемблер.
Re[4]: Visual studion 2005/2008 проблеммы с линковкой
Здравствуйте, quodum, Вы писали:
Q>Отключи свойства_проекта/C++/Code Generation/Minimal Rebuild. Когда эта опция включена, некоторые изменения в заголовках (а иногда и в .cpp-шниках!) не обнаруживаются. Последний раз убил из-за этого три часа на отладку, прежде чем догадался проверить ассемблер.
Интересно... У меня включено, никогда не сталкивался. ЧЯДНТ^W в каких случаях оно игнорирует изменения?
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Перекуём баги на фичи!
Re[5]: Visual studion 2005/2008 проблеммы с линковкой
Здравствуйте, Кодт, Вы писали:
К>Интересно... У меня включено, никогда не сталкивался. ЧЯДНТ^W в каких случаях оно игнорирует изменения?
Не знаю. У меня за всё время общения с MSVC раза три было. Чем тратить время на эксперименты, проще отключить, тем более что пользы от этой опции никакой нет. Последний случай оставил смутное ощущение, что маленькое изменение в теле шаблонного метода (типа +1 на +2 поправил) не регистрируется. Но наверняка там условия более узкие, иначе бы чаще натыкались.
Re: Visual studion 2005/2008 проблеммы с линковкой
Аноним 844 пишет:
> У меня такая ситуация: > Есть проект статической либы и проект дллки, которая линкуется с этой либой. > Меняю прототип функции в либе, запускаю билд,получаю новую лию. После > чего запускаю билд дллки, но она не определяет, что прототип ф-ии > изменился и не перекомпилируется, тем самым остается со старой либой.