|
|
 |
Ответов
|
Aug 3 2006, 14:14
|

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

|
Цитата(dxp @ Aug 3 2006, 13:13)  Цитата(RRaptor @ Aug 3 2006, 16:28)  При разработке программы для LP2136 использую CrossStudio 1.4. Почему то его линкер отказывается понимать оператор new например на строку int* i=new int[10]; он пишет C:/Program Files/Rowley Associates Limited/CrossWorks for ARM 1.4/lib/libcpp_v4t_a_i_le.a(new.o)(.text+0x4c): In function `operator new(unsigned long)':: undefined reference to `abort' хотя компилируется нормально и на delete линкер не ругается. Можно конечно обойтись и без new, но хотелось бы понять что к чему.
Не находит в библиотеке указанную функцию. Может, библиотеку какую-нито забыли подключить? Скорее требуется написать самописную функцию обработки ошибки выделения памати с именем abort.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Aug 3 2006, 15:46
|

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

|
Цитата(Сергей Борщ @ Aug 3 2006, 17:14)  Скорее требуется написать самописную функцию обработки ошибки выделения памати с именем abort. Именно оно. То RRaptorТолько прежде, чем писать, подумайте а оно (эта обертка на malloc() ) Вам надо? Для раздумий, можете почитать топик: http://electronix.ru/forum/index.php?showt...6000&hl=newИли, припасть к первоисточнику.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 4 2006, 06:11
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 3-08-06
Из: Санкт-Петербург
Пользователь №: 19 279

|
Цитата Только прежде, чем писать, подумайте а оно (эта обертка на malloc() ) Вам надо? Дак в том то и дело, что не надо. Написал класс дя управления 16 буферами (что то типа 2 очередей) в котором перегрузил new и delete для работы со статической памятью (без new) а он гад отказался компилироваться так как память для буферов вылялась динамически. Я то сначала думал что это он на мой перегруженный new ругается, а оказалось в нем этого new вообще никакого нет. Я этот класс уже перекроил на работу без выделения памяти. Кстати, еще один прикол в компиляторе. При наследовании почему то надо явно указывать функции из базового класса. Например: Код class A { void Funk1(void){} };
class B: public A { void Funk2(void) { Funk1();// не работает A::Funk1(); // работает } } к чему бы это
|
|
|
|
|
Aug 4 2006, 07:40
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(RRaptor @ Aug 4 2006, 13:11)  Код class A { void Funk1(void){} };
class B: public A { void Funk2(void) { Funk1();// не работает A::Funk1(); // работает } } к чему бы это В этом коде функция A::Funk1 является закрытой и не может быть доступна никому, кроме экземпляров класса А. Поэтому на A::Funk1(); // работает компилятор должен выдать ошибку, дескать, A::Funk1 inaccessible. Чтобы был доступ, надо эту функцию объявить в секции public либо protected. Вроде так, если ничего на забыл.
Сообщение отредактировал dxp - Aug 4 2006, 07:41
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
RRaptor оператор new Aug 3 2006, 09:28 PrSt Цитата(RRaptor @ Aug 3 2006, 12:28) При р... Aug 3 2006, 09:57     RRaptor Цитата(dxp @ Aug 4 2006, 11:40) В этом ко... Aug 4 2006, 10:03    ig_z Цитата(RRaptor @ Aug 4 2006, 09:11) Кодcl... Aug 4 2006, 11:39 upc2 Думаю, что оператор выделения динамической памяти ... Aug 3 2006, 11:06 Harbour f() abort должна быть обьявлена как extern "C... Aug 3 2006, 11:50 yosephcz Цитата(RRaptor @ Aug 3 2006, 13:28) При р... Aug 6 2006, 06:19 AVR Насколько безопасно использовать оператор new для ... Aug 6 2006, 14:36  IgorKossak Цитата(AVR @ Aug 6 2006, 17:36) Насколько... Aug 7 2006, 14:20
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|