|
Модераторы: xvr |
|
kuvshinka |
|
|||
Опытный Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
подскажите пож-та - программа выдает 2 ошибки типа "undefined reference to __cxa_vec_ctor" -первый раз на строке с "}" от описания некой функции, второй - на строке объявления функции в классе....что же такое __cxa_vec_ctor и как исправить сию ошибку? в программе нет ничего подобного...
|
|||
|
||||
MAKCim |
|
|||
Воін дZэна Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
если код небольшой, покажите
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
xvr |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Линковать с помощью g++
|
||||
|
|||||
kuvshinka |
|
|||
Опытный Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
xvr: вы совершенно правы - этот конфликт возникает при использовании массива объектов и конструктора....но почему такая ошибка появляется? их что же - нельзя использовать вместе?
|
|||
|
||||
xvr |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Это не ошибка. Это неправильная сборка программы
Если вы линкуете программу с помощью g++, то он добавляет эту библиотеку сам. Если же вы линкуете с помощью ld, то эту библиотеку надо подавать руками (что нибудь типа -lsupc++ или -lstdc++) |
||||
|
|||||
kuvshinka |
|
|||
Опытный Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
так что же получается - нельзя использовать вместе массив объектов и конструктор данного класса? (если можно, то как избежать вышеуказанной ошибки компоновщика....проект собирается make-файлом...)
|
|||
|
||||
xvr |
|
||||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Можно
|
||||||
|
|||||||
kuvshinka |
|
|||
Опытный Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
Если использовать CC=/opt/e90/lcc/bin/lccs_il, то ошибок вообще не будет и создастся экзешник (если не используется массив объектов+конструктор)...при использовании CC=g++ на используемых в одном из cpp-ков переменых выдаются ошибки типа „переменная per1 was not declared in this scope“ (хотя они подключаются хидером) + ошибка ‘::main’ must return ‘int’... так что же и как надо подправить в таком make-файле, чтобы создавался экзешник даже при исп-ии массива объектов+конструктора? Это сообщение отредактировал(а) kuvshinka - 16.12.2009, 21:46 |
|||
|
||||
xvr |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Не знаю, что надо подправить в этом makefile'е, т.к. не имею ни малейшего представления, что это за компилятор - lccs_il. Могу только догадываться, что это не gcc
Рекомендую поправить ошибки и перейти на g++ |
||||
|
|||||
kuvshinka |
|
|||
Опытный Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
хм...просто непонятно - указанный выше пример ошибок никаких не выдает - пробуешь то же самое но с g++ - эти ошибки возникают.....
тогда подскажите простенький вариант make-файла по сборке многофайлового проекта (много cpp-к) с использованием компилятора g++... Это сообщение отредактировал(а) kuvshinka - 16.12.2009, 22:30 |
|||
|
||||
xvr |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Поменять CC=... на CC=g++
|
||||
|
|||||
kuvshinka |
|
|||
Опытный Профиль Группа: Участник Сообщений: 386 Регистрация: 27.4.2008 Репутация: нет Всего: нет |
ну написано же выше - при изменении CC=... на CC=g++ возникают ошибки "in file..cpp „func1 was not declared in this scope“" и т.п.....но эти якобы "необъявленные"функции подключены соответствующим хидером (при исп-ии компилятора как в примере - ошибок вообще нет)....
|
|||
|
||||
xvr |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Товарищи ученые - у меня в подвале происходит непонятный стук! Прошу разобраться! Файл, где эта ошибка появляется покажите. И текст ошибки (дословно, как компилятор выдал)
Скорее всего ошибка в подключении хидеров (например циклическое включение хидеров) Кстати, если ваш 'компилятор как в примере' это lcc, то он С++ не поддерживает, а поддерживает какую то дикую помесь С и С++ (этакий гибрид ужа с ежом). Я бы не стал с этой колючей проволокой связываться |
||||
|
|||||
shigorin |
|
|||
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 2 Регистрация: 12.1.2017 Где: Москва Репутация: нет Всего: нет |
Вдруг ещё кто наткнётся поиском по
Ответ сотрудников МЦСТ: "Попробуйте добавить в линковку опцию -lcxa" (в моём случае хватило export LIBS=-lcxa перед запуском autoreconf и configure); также сообщили, что планируется привести поведение в этом аспекте к соответствию gcc, но несколько позже. Ну и на будущее: им и стоило сразу писать, уяснив, что это разница между lcc и gcc :) |
|||
|
||||
shigorin |
|
|||
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 2 Регистрация: 12.1.2017 Где: Москва Репутация: нет Всего: нет |
Ещё замечание: lcc-1.23 переработали в сторону совпадения поведения с gcc; "либо, чтобы не зависеть от версии компилятора, линковать с помощью g++" (цитата опять же коллег из МЦСТ).
PS: на всякий -- портируем альт под эльбрус, уже неплохо работает. |
|||
|
||||
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |