Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR ARM 5.2 совмещение С и С++ в одном проекте
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
sergik_vrn
Есть проект под IAR 5.20, содержащий как С++ исходники (основные файлы), так и С-файлы (исходники операционки, библиотеки процессора). Втупую в режиме компиляции EC++ проект не собирается, plain C исходники требуют серьезной переработки. Победил проблему путем установки для них отдельного режима компиляции. Но в этом случае как только я включаю режим компиляции multi-file, на каждом из таких файлов компилер вываливается с internal error 005. Что посоветуете?
zltigo
Цитата(sergik_vrn @ Dec 18 2008, 01:00) *
Что посоветуете?

Не включать, если не поняли, что включили.
Сергей Борщ
Цитата(sergik_vrn @ Dec 18 2008, 00:00) *
Победил проблему путем установки для них отдельного режима компиляции.
Не лень было? Компилятор в состоянии определить режим компиляции по расширению файла. Дайта плюсовым файлам расширение .cpp и вместо принудительного EC++ включите Automatic (extension based). Во всяком случае для версий до 5.хх было так.
sergik_vrn
Цитата(Сергей Борщ @ 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
и т.д
MALLOY2
Так оно и небудет работать !

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

А у вас получается в одном файле функции С и С++ как оно будет работать ?
Сергей Борщ
Цитата(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 файлов. Или без мультифайловой компиляции это собирается?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.