|
Как в IAR Собрать Проект Состоящий Из Нескольких Файлов |
|
|
|
Sep 1 2006, 23:28
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188

|
Картина такая: проект состоит из нескольких файлов (в одном математика, в другом ввод/вывод и т.д.). В режиме отладки (best debug support) проект нормально собирается и очень даже работает, но как только ставлю оптимизацию (любую по size или speed), линкер пишет, что у него неопределенная ссылки на внешние функции. Самое удивительно, что с глобальными переменными, объявленными в разных модулях, все нормально, более того функции из некоторых файлов нормально находит, а вот некоторые файлы - ни в какую. Дошло до того, что удалив из С-шных исходников IAR-овскую и MSP-шную специфику запихнул все в Visual C++ 6.0, так вижуал сказал, что все OK. Так что дело в IAR'e. Может порядок компиляции, может просто глюк, а может я где-то грабли не заметил. Пока пришло все запихнуть нафиг в один файл, но уж больно неудобно и очень нелогично получается
|
|
|
|
|
 |
Ответов
|
Sep 3 2006, 00:29
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188

|
Цитата(rezident @ Sep 3 2006, 00:36)  Версия IAR какая? Глобальные переменные и функции, описанные в других модулях, как extern объявляли? ИМХО проще всего, дополнив все прототипы extern, запихнуть их в один хидер. И уже этот хидер инклюдить во все модули программы по принципу "кашу маслом не испортишь". В том смысле, что прототип функции, объявленный как extern, не будет конфликтовать в другим таким же прототипом или с самой функцией, даже если они встретятся в одном файле. А вообще VAI правильно заметил: Код в студию! Ну и ошибки компилятора тоже. Для каждого с-файла есть свой h-файл, а еще есть и файл GlobalVars.h, где перечислены все extern-ы и который incude-ится где только можно. Да и сам проект собирается и работает как в IAR'е, так и в VC6.0 - это к вопросу о сишном синтаксисе. Проблемы возникают лишь при включении оптимизации(!) . Версия IAR'а - 3.40
|
|
|
|
|
Sep 13 2006, 07:15
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(shasik @ Sep 4 2006, 23:40)  Причиной оказались "#pragma inline=forced". Когда включена оптимизация inline функция работает только в пределах одного файла и не вылазит в другой. Могли бы, черти, в help-е отметить этот момент. Ну, так надо было эту функцию в заголовочный файл вынести.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|