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

 
 
 
Reply to this topicStart new topic
> с++ standard library
srm
сообщение Jan 10 2010, 12:39
Сообщение #1


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



написал програмку - всё компилится, но не грузится во время отладки. оказалось, что такое повторяется если использовать оператор new или другие функции стандартной библиотеки. довольно удивительно, я думал, что должно вылазить что-то типа unresolvet external symbol. вобщем вопрос: как подключить к проекту std библиотеку?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 10 2010, 12:59
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Для ARM существует не один тип компилятора, уточните.
Go to the top of the page
 
+Quote Post
srm
сообщение Jan 10 2010, 13:04
Сообщение #3


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



Цитата(aaarrr @ Jan 10 2010, 17:59) *
Для ARM существует не один тип компилятора, уточните.

ага, забыл. at91sam7s256
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 10 2010, 13:09
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Компилятора.
Go to the top of the page
 
+Quote Post
srm
сообщение Jan 10 2010, 13:15
Сообщение #5


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



Цитата(aaarrr @ Jan 10 2010, 18:09) *
Компилятора.

keil 3.8
Go to the top of the page
 
+Quote Post
srm
сообщение Jan 10 2010, 18:17
Сообщение #6


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



вот проект. коментирую первую строчку - всё норм. с ней не грузится. magic %)
Прикрепленные файлы
Прикрепленный файл  spider.rar ( 117.38 килобайт ) Кол-во скачиваний: 22
 
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 10 2010, 18:38
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Для new нужен heap, а в стартапе у вас:
Код
Heap_Size       EQU     0x00000000

Поставьте туда разумное число, и будет счастье.
Go to the top of the page
 
+Quote Post
srm
сообщение Jan 10 2010, 18:50
Сообщение #8


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



Цитата(aaarrr @ Jan 10 2010, 23:38) *
Для new нужен heap, а в стартапе у вас:
Код
Heap_Size       EQU     0x00000000

Поставьте туда разумное число, и будет счастье.

ух ты! пасиб. заработало smile.gif))
Go to the top of the page
 
+Quote Post
srm
сообщение Jan 11 2010, 02:25
Сообщение #9


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



ещё одна проблемка. тут точно проблема с экспортом. undefined symbol vtable и Undefined symbol typeinfo. по идее, у меня в коде нет динамического преобразования типов, есть только наследование и виртуальный полиморфизм, так что хотелось бы вообще отключить генерацию RTTI. не знаю, можно ли это сделать в keil, но, например, в Visual Studio прокатывает. т.е. таблица виртуальных функций генерируется, а информация о типах - нет.

на сайте keil'a написана такая вещь:
Use the command-line option --vfemode=force_no_rtti to make the linker VFE aware and force the removal of all RTTI objects. In this mode all virtual functions are retained.

но мне это не нравится. по идее, виртуальные функции должны оставаться виртуальными, а тут написано иначе sad.gif((

Сообщение отредактировал srm - Jan 11 2010, 02:43
Go to the top of the page
 
+Quote Post
Dima_G
сообщение Jan 11 2010, 03:50
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699



Цитата(srm @ Jan 10 2010, 22:50) *
ух ты! пасиб. заработало smile.gif))


Была такая же проблема на другой платформе (BF537, VisualDSP)
Помогло в отладке следующее

Код
///////////////////////////////////////////////////////////////////////////////
// Hadler for NEW exceptions
///////////////////////////////////////////////////////////////////////////////
void My_new_handler() {Halt("NEW exceptions\n\r");}

///////////////////////////////////////////////////////////////////////////////
void main()
{
  set_new_handler(My_new_handler);


Цитата(srm @ Jan 11 2010, 06:25) *
на сайте keil'a написана такая вещь:
Use the command-line option --vfemode=force_no_rtti to make the linker VFE aware and force the removal of all RTTI objects. In this mode all virtual functions are retained.

но мне это не нравится. по идее, виртуальные функции должны оставаться виртуальными, а тут написано иначе sad.gif((


http://www.google.ru/language_tools?hl=ru
Вам в помощь smile.gif
Go to the top of the page
 
+Quote Post
srm
сообщение Jan 16 2010, 08:47
Сообщение #11


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



опция --vfemode=force_no_rtti не помогает - один фиг вылазит ошибка

Error: L6218E: Undefined symbol typeinfo for CTimerEvents (referred from main.o).
Error: L6218E: Undefined symbol vtable for CTimerEvents (referred from main.o).
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 16 2010, 18:59
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



RTTI никакого отношения к виртуальным функциям не имеет и нужна, действительно, чтобы заработало typeinfo и безопасный <dynamic_cast>. Учитывая, что к тому же RTTI сильно притормаживает программу, то его лучше избегать, тем более, что в emdedded мире и без этого чуда вполне можно обойтись.

CTimerEvents вы сами писали, или это из библиотеки без исходников?
Go to the top of the page
 
+Quote Post
srm
сообщение Jan 17 2010, 11:54
Сообщение #13


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

Группа: Участник
Сообщений: 144
Регистрация: 27-12-09
Из: Пермь
Пользователь №: 54 501



Цитата(sergeeff @ Jan 16 2010, 23:59) *
RTTI никакого отношения к виртуальным функциям не имеет и нужна, действительно, чтобы заработало typeinfo и безопасный <dynamic_cast>. Учитывая, что к тому же RTTI сильно притормаживает программу, то его лучше избегать, тем более, что в emdedded мире и без этого чуда вполне можно обойтись.

ну, именно за этим я и хочу его отключить, только не знаю как.

Цитата
CTimerEvents вы сами писали, или это из библиотеки без исходников?

я написал класс CTimer, он реализован по архитектуре MVC - генерирует эвенты на интерфейс CTimerEvets. как только создал виртуальные методы - кеил тут же начал требовать typeinfo и vtable. понятно, что они нафиг не нужны, если не юзаешь динамическое преобразование типов.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 17 2010, 18:33
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



И что же вы такого написали в main()? Может приведете для анализа текст main и CTimerEvents? А то больно сложно судить о том, чего не видишь.
Go to the top of the page
 
+Quote Post

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

 


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


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