реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> IAR ARM 5.2 совмещение С и С++ в одном проекте, как победить режим компиляции "multi-file"?
sergik_vrn
сообщение Dec 17 2008, 22:00
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491



Есть проект под IAR 5.20, содержащий как С++ исходники (основные файлы), так и С-файлы (исходники операционки, библиотеки процессора). Втупую в режиме компиляции EC++ проект не собирается, plain C исходники требуют серьезной переработки. Победил проблему путем установки для них отдельного режима компиляции. Но в этом случае как только я включаю режим компиляции multi-file, на каждом из таких файлов компилер вываливается с internal error 005. Что посоветуете?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 17 2008, 22:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(sergik_vrn @ Dec 18 2008, 01:00) *
Что посоветуете?

Не включать, если не поняли, что включили.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 17 2008, 22:52
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(sergik_vrn @ Dec 18 2008, 00:00) *
Победил проблему путем установки для них отдельного режима компиляции.
Не лень было? Компилятор в состоянии определить режим компиляции по расширению файла. Дайта плюсовым файлам расширение .cpp и вместо принудительного EC++ включите Automatic (extension based). Во всяком случае для версий до 5.хх было так.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
sergik_vrn
сообщение Dec 18 2008, 06:28
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491



Цитата(Сергей Борщ @ Dec 18 2008, 01:52) *
Не лень было? Компилятор в состоянии определить режим компиляции по расширению файла. Дайта плюсовым файлам расширение .cpp и вместо принудительного EC++ включите Automatic (extension based). Во всяком случае для версий до 5.хх было так.

ну вообще-то у меня так оно и есть (у с++ файлов расширения срр). когда в свое время собирал, не получилось по-другому. щас попробую повторить

навскидку. отдельный режим компиляции отключил, в проекте включил extension-based. вот, что имею

485_unit.cpp
71x_it.c
Fatal Error[c0000005p]: Uncontrolled termination
Error while running C/C++ Compiler
71x_lib.c
Fatal Error[c0000005]: Uncontrolled termination
Error while running C/C++ Compiler
adc12.c
Fatal Error[c0000005]: Uncontrolled termination
Error while running C/C++ Compiler
aout_unit.cpp
apb.c
Fatal Error[c0000005p]: Uncontrolled termination
Error while running C/C++ Compiler
arch_flash.cpp
archive.cpp
bazbus.cpp
bspi.c
Fatal Error[c0000005фµ…†$†]: Uncontrolled termination
Error while running C/C++ Compiler
buttons.cpp
...

IAR C/C++ Compiler for ARM
5.20.2.21007 (5.20.2.21007)
C:\Program Files\IAR Systems\Embedded Workbench 5.0\ARM\bin\iccarm.exe
10.12.2008 13:40:49, 10088448 bytes


Цитата(zltigo @ Dec 18 2008, 01:09) *
Не включать, если не поняли, что включили.

желательно всетки понять, потому что проект-то собирать как-то надо
...

в итоге с трапом я разобрался, extension-dependent компиляция заработала, проект собирается. правда, размер при максимальной оптимизации вырос на 0x300 байт примерно по сравнению с 4.41. Но multi-file компиляция все равно не работает, такое ощущение, что он все исходники пытается собрать в режиме С

Building configuration: project - flash
Updating build tree...
71x_it.c 71x_lib.c adc12.c apb.c bspi.c eic.c emi.c flash.c gpio.c i2c.c pcu.c rccu.c rtc.c tim.c uart.c wdg.c xti.c
heap_1.c list.c port.c queue.c tasks.c company.cpp ext_ram.cpp uart_class.cpp d_analog.cpp d_arch.cpp
d_bars.cpp d_curr.cpp d_cycle.cpp d_debug.cpp d_hoz.cpp d_info.cpp d_limit.cpp d_state.cpp d_tech.cpp
d_trends.cpp p_calibr.cpp p_common.cpp p_control.cpp p_cycle.cpp p_eval.cpp p_extch.cpp p_i_trends.cpp
p_inputs.cpp p_net.cpp p_outputs.cpp p_timer.cpp progmode.cpp indicator.cpp arch_flash.cpp archive.cpp
bazbus.cpp buttons.cpp clock.cpp control.cpp count.cpp cycle.cpp inputs.cpp modbus.cpp outputs.cpp
progtimers.cpp scroll.cpp serial.cpp trends.cpp p_string.cpp 485_unit.cpp aout_unit.cpp config.cpp
cont_unit.cpp display.cpp hardware.cpp inp_unit.cpp lcd_task.cpp main.cpp out_unit.cpp serial_task.cpp
trend_task.cpp usb_task.cpp fat16.cpp philips.cpp
Error[Pe020]: identifier "class" is undefined C:\Program Files\IAR Systems\Embedded Workbench 5.0\ARM\INC\exception 13
Error[Pe018]: expected a ")" C:\Program Files\IAR Systems\Embedded Workbench 5.0\ARM\INC\exception 14
и т.д
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Dec 18 2008, 09:28
Сообщение #5


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Так оно и небудет работать !

если по простому multi-file компиляция обьеденяет все функции вашего проэкта в один большой файл и потом компилирует это позволяет компилятору видеть тела всех функций, за счет этого достигается лучшая оптимизация.

А у вас получается в одном файле функции С и С++ как оно будет работать ?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 18 2008, 10:10
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(sergik_vrn @ Dec 18 2008, 08:28) *
Error[Pe020]: identifier "class" is undefined C:\Program Files\IAR Systems\Embedded Workbench 5.0\ARM\INC\exception 13
Так надо разобраться, почему у вас С++ заголовочный файл exception включился в какой-то из .c файлов. Или без мультифайловой компиляции это собирается?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 18:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016