Visual studion 2005/2008 проблеммы с линковкой
От: Аноним  
Дата: 16.09.09 11:43
Оценка:
У меня такая ситуация:
Есть проект статической либы и проект дллки, которая линкуется с этой либой.
Меняю прототип функции в либе, запускаю билд,получаю новую лию. После чего запускаю билд дллки, но она не определяет, что прототип ф-ии изменился и не перекомпилируется, тем самым остается со старой либой.
Конечно же, можно запустить rebuild или clean/build(это мне не подходит), но в Visual Studio 6 этого не требуется, нажимаем Build, и студия сама определяет, что были изменения и перекомпилирует то, что нужно.
Другими словами, Build в Visual Studio 2005/2008 не видит изменения, если они былли только в хедерах.
Должно же это как-то решатся? Может в настройках что есть?

П.С. Precompiled Headers в проекте не используются.
Re: Visual studion 2005/2008 проблеммы с линковкой
От: Sergey Россия  
Дата: 16.09.09 12:01
Оценка:
Здравствуйте, Аноним, Вы писали:

А>У меня такая ситуация:

А>Есть проект статической либы и проект дллки, которая линкуется с этой либой.
А>Меняю прототип функции в либе, запускаю билд,получаю новую лию. После чего запускаю билд дллки, но она не определяет, что прототип ф-ии изменился и не перекомпилируется, тем самым остается со старой либой.
А>Конечно же, можно запустить rebuild или clean/build(это мне не подходит), но в Visual Studio 6 этого не требуется, нажимаем Build, и студия сама определяет, что были изменения и перекомпилирует то, что нужно.
А>Другими словами, Build в Visual Studio 2005/2008 не видит изменения, если они былли только в хедерах.
А>Должно же это как-то решатся? Может в настройках что есть?

Вообще решается оно не всегда, я совершенно уверен что в студии есть баги на эту тему. Но, во многих случаях дело не в багах студии, а например в том что хедер в проект не включен. Или зависимость от либы задана через опцию линкера, а не через зависимости между проектами.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Re: Visual studion 2005/2008 проблеммы с линковкой
От: Кодт Россия  
Дата: 16.09.09 17:06
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>У меня такая ситуация:

А>Есть проект статической либы и проект дллки, которая линкуется с этой либой.

Очень надеюсь, что оба проекта у тебя в одном воркспейсе?
Если да — то установи зависимости между проектами (меню 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 проблеммы с линковкой
От: meerius Канада  
Дата: 16.09.09 18:04
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, <Аноним>, Вы писали:


Нашел более простой вариант воспроизведения проблеммы:
Один проект(в моем случаее, длл), несколько хедеров, несколько спп. Компилируем, все нормально. Меняем прототип ф-ии в хедере, потом билд. Результат — изменения в хедере не занюхал, проект не перекомпилировался.
Похоже на баг в студии, но вроде уже пять лет прошло, неужели не пофиксили?
Про это, вообще, никакой инфрормации нет. Если такое поведение студии Микрософ счетает нормальным, должна же быть хоть какая-та заметка по этому поводу!?
Неужели за пять то лет никто не заметил, никто им не написал?
«Мы с тобой в чудеса не верим, Оттого их у нас не бывает…»
Re[3]: Visual studion 2005/2008 проблеммы с линковкой
От: Pavel Dvorkin Россия  
Дата: 17.09.09 06:56
Оценка:
Здравствуйте, meerius, Вы писали:

M>Здравствуйте, Кодт, Вы писали:


К>>Здравствуйте, <Аноним>, Вы писали:


M>Нашел более простой вариант воспроизведения проблеммы:

M>Один проект(в моем случаее, длл), несколько хедеров,

Хедеры в проект включены ? В дереве проекта они есть ? Можно ведь и без этого, #include все равно сработает, но тогда откуда студии знать, что изменения этого файла .h требуют перекомпиляции ?
With best regards
Pavel Dvorkin
Re[3]: Visual studion 2005/2008 проблеммы с линковкой
От: Кодт Россия  
Дата: 17.09.09 07:49
Оценка:
Здравствуйте, meerius, Вы писали:

M>Нашел более простой вариант воспроизведения проблеммы:

M>Один проект(в моем случаее, длл), несколько хедеров, несколько спп. Компилируем, все нормально. Меняем прототип ф-ии в хедере, потом билд. Результат — изменения в хедере не занюхал, проект не перекомпилировался.
M>Похоже на баг в студии, но вроде уже пять лет прошло, неужели не пофиксили?
M>Про это, вообще, никакой инфрормации нет. Если такое поведение студии Микрософ счетает нормальным, должна же быть хоть какая-та заметка по этому поводу!?
M>Неужели за пять то лет никто не заметил, никто им не написал?

Сделай, пожалуйста, дистиллированный пример и опубликуй (зип исходников, включая .vcproj и .sln)
Я склонен подозревать проблемы скорее у тебя в проекте (что-нибудь неправильно сконфигурировано) или на машине (некорректные даты у файлов, например), чем у студии.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Перекуём баги на фичи!
Re[3]: Visual studion 2005/2008 проблеммы с линковкой
От: quodum  
Дата: 17.09.09 08:33
Оценка:
Здравствуйте, meerius, Вы писали:

M>Здравствуйте, Кодт, Вы писали:


К>>Здравствуйте, <Аноним>, Вы писали:


M>Нашел более простой вариант воспроизведения проблеммы:

M>Один проект(в моем случаее, длл), несколько хедеров, несколько спп. Компилируем, все нормально. Меняем прототип ф-ии в хедере, потом билд. Результат — изменения в хедере не занюхал, проект не перекомпилировался.
M>Похоже на баг в студии, но вроде уже пять лет прошло, неужели не пофиксили?
M>Про это, вообще, никакой инфрормации нет. Если такое поведение студии Микрософ счетает нормальным, должна же быть хоть какая-та заметка по этому поводу!?
M>Неужели за пять то лет никто не заметил, никто им не написал?

Отключи свойства_проекта/C++/Code Generation/Minimal Rebuild. Когда эта опция включена, некоторые изменения в заголовках (а иногда и в .cpp-шниках!) не обнаруживаются. Последний раз убил из-за этого три часа на отладку, прежде чем догадался проверить ассемблер.
Re[4]: Visual studion 2005/2008 проблеммы с линковкой
От: Кодт Россия  
Дата: 17.09.09 09:27
Оценка:
Здравствуйте, quodum, Вы писали:

Q>Отключи свойства_проекта/C++/Code Generation/Minimal Rebuild. Когда эта опция включена, некоторые изменения в заголовках (а иногда и в .cpp-шниках!) не обнаруживаются. Последний раз убил из-за этого три часа на отладку, прежде чем догадался проверить ассемблер.


Интересно... У меня включено, никогда не сталкивался. ЧЯДНТ^W в каких случаях оно игнорирует изменения?
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Перекуём баги на фичи!
Re[5]: Visual studion 2005/2008 проблеммы с линковкой
От: quodum  
Дата: 17.09.09 10:28
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Интересно... У меня включено, никогда не сталкивался. ЧЯДНТ^W в каких случаях оно игнорирует изменения?


Не знаю. У меня за всё время общения с MSVC раза три было. Чем тратить время на эксперименты, проще отключить, тем более что пользы от этой опции никакой нет. Последний случай оставил смутное ощущение, что маленькое изменение в теле шаблонного метода (типа +1 на +2 поправил) не регистрируется. Но наверняка там условия более узкие, иначе бы чаще натыкались.
Re: Visual studion 2005/2008 проблеммы с линковкой
От: MasterZiv СССР  
Дата: 20.09.09 10:25
Оценка:
Аноним 844 пишет:

> У меня такая ситуация:

> Есть проект статической либы и проект дллки, которая линкуется с этой либой.
> Меняю прототип функции в либе, запускаю билд,получаю новую лию. После
> чего запускаю билд дллки, но она не определяет, что прототип ф-ии
> изменился и не перекомпилируется, тем самым остается со старой либой.

Наверняка .dll-ка видит старый *.h файл.
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.