Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка __cxa_vec_ctor 
V
    Опции темы
kuvshinka
Дата 10.12.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



подскажите пож-та - программа выдает 2 ошибки типа "undefined reference to __cxa_vec_ctor" -первый раз на строке с "}" от описания некой функции, второй - на строке объявления функции в классе....что же такое __cxa_vec_ctor и как исправить сию ошибку? в программе нет ничего подобного...  
PM MAIL   Вверх
MAKCim
Дата 10.12.2009, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



если код небольшой, покажите


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
xvr
Дата 11.12.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 6984
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 20
Всего: 222



Цитата(kuvshinka @ 10.12.2009,  22:39)
подскажите пож-та - программа выдает 2 ошибки типа "undefined reference to __cxa_vec_ctor" 
как исправить сию ошибку? 

Линковать с помощью g++
Цитата

в программе нет ничего подобного...
Это функция run-time поддержки С++. Видимо в программе есть массив объектов с конструктором. Судя по названию, __cxa_vec_ctor это вспомогательная функция для вызова конструкторов для массива объектов

PM MAIL   Вверх
kuvshinka
Дата 12.12.2009, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



xvr: вы совершенно правы - этот конфликт возникает при использовании массива объектов и конструктора....но почему такая ошибка появляется? их что же - нельзя использовать вместе?
PM MAIL   Вверх
xvr
Дата 12.12.2009, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 6984
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 20
Всего: 222



Цитата(kuvshinka @ 12.12.2009,  21:44)
xvr: вы совершенно правы - этот конфликт возникает при использовании массива объектов и конструктора....но почему такая ошибка появляется? 

Это не ошибка. Это неправильная сборка программы

Цитата

их что же - нельзя использовать вместе?
Можно. Но нужно линковать с библиотекой поддержки С++.
Если вы линкуете программу с помощью g++, то он добавляет эту библиотеку сам. Если же вы линкуете с помощью ld, то эту библиотеку надо подавать руками (что нибудь типа -lsupc++ или -lstdc++)

PM MAIL   Вверх
kuvshinka
Дата 15.12.2009, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



так что же получается - нельзя использовать вместе массив объектов и конструктор данного класса? (если можно, то как избежать вышеуказанной ошибки компоновщика....проект собирается make-файлом...)
PM MAIL   Вверх
xvr
Дата 15.12.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 6984
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 20
Всего: 222



Цитата(kuvshinka @ 15.12.2009,  20:51)
так что же получается - нельзя использовать вместе массив объектов и конструктор данного класса?

Можно

Цитата

если можно, то как избежать вышеуказанной ошибки компоновщика....
Блин, в третий раз пишу - ЛИНКОВАТЬ С ПОМОЩЬЮ g++ !!!
Цитата

проект собирается make-файлом...
makefile на бочку, неа эээ Исходники в студию, ну в общем показывай как собираешь  smile 

PM MAIL   Вверх
kuvshinka
Дата 16.12.2009, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



Код

program_name := Proga1
source_dirs  :=   ../my_files
include_dirs := $(source_dirs) # /usr/include/c++/4.2.1

CC=/opt/lcc/bin/lccs_il

CFLAGS:= -DOSTYPE=linux-gnu $(addprefix -I, $(include_dirs)) -w -D_POSIX_CPP -DGNU_LINUX -D_DYNAMIC_READING -D_GNU_SOURCE -g
LDFLAGS   := $(addprefix -L, $(lib_dirs)) -lfiles_rt -lel_pthread
 
headers := $(wildcard $(addsuffix *.h, $(source_dirs) ) )
source_files := $(wildcard $(addsuffix *.cpp, $(source_dirs) ) )
object_files := $(notdir $(source_files:.cpp=.o) )

$(program_name): $(object_files)
    @echo Linking ...
    $(CC) $^  $(LDFLAGS) -o Proga1
VPATH := $(source_dirs)

#include dependence

%.o: %.cpp $(headers)
    $(CC)  -c $(CFLAGS) $<

dependence: $(source_files) $(wildcard $(addsuffix *.h, $(include_dirs) ) )
    @echo Creating dependence ...
    $(CC) -M $(CFLAGS) $(source_files) > $@


Если использовать 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
PM MAIL   Вверх
xvr
Дата 16.12.2009, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 6984
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 20
Всего: 222



Не знаю, что надо подправить в этом makefile'е, т.к. не имею ни малейшего представления, что это за компилятор - lccs_il. Могу только догадываться, что это не gcc  smile 

Цитата

при использовании CC=g++  на используемых в одном из cpp-ков переменых выдаются ошибки типа „переменная per1  was not declared in this scope“ (хотя они подключаются хидером)
Видимо как то не так подключаются

Цитата

ошибка ‘::main’ must return ‘int’...
Ну так напиши int main, делов то

Рекомендую поправить ошибки и перейти на g++  smile 

PM MAIL   Вверх
kuvshinka
Дата 16.12.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



хм...просто непонятно - указанный выше пример ошибок никаких не выдает - пробуешь то же самое но с g++ - эти ошибки возникают.....
тогда подскажите простенький вариант make-файла по сборке многофайлового проекта (много cpp-к) с использованием компилятора g++... 

Это сообщение отредактировал(а) kuvshinka - 16.12.2009, 22:30
PM MAIL   Вверх
xvr
Дата 17.12.2009, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 6984
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 20
Всего: 222



Цитата(kuvshinka @ 16.12.2009,  22:28)
тогда подскажите простенький вариант make-файла по сборке многофайлового проекта (много cpp-к) с использованием компилятора g++...

Поменять CC=... на CC=g++
Цитата

хм...просто непонятно - указанный выше пример ошибок никаких не выдает - пробуешь то же самое но с g++ - эти ошибки возникают.....
А можно код (с ошибками) и сами ошибки?

PM MAIL   Вверх
kuvshinka
Дата 17.12.2009, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



ну написано же выше - при изменении CC=... на CC=g++ возникают ошибки "in file..cpp „func1 was not declared in this scope“" и т.п.....но эти якобы "необъявленные"функции подключены соответствующим хидером (при исп-ии компилятора как в примере - ошибок вообще нет).... 
PM MAIL   Вверх
xvr
Дата 17.12.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 6984
Регистрация: 28.8.2007
Где: Химки, Московская обл

Репутация: 20
Всего: 222



Цитата(kuvshinka @ 17.12.2009,  22:29)
ну написано же выше - при изменении CC=... на CC=g++ возникают ошибки "in file..cpp „func1 was not declared in this scope“" и т.п.....

Товарищи ученые - у меня в подвале происходит непонятный стук! Прошу разобраться!
Файл, где эта ошибка появляется покажите. И текст ошибки (дословно, как компилятор выдал)
Цитата

но эти якобы "необъявленные"функции подключены соответствующим хидером (при исп-ии компилятора как в примере - ошибок вообще нет)....
Ваш 'компилятор как в примере' похоже сам одна большая ошибка  smile Я как то g++ больше доверяю  smile 
Скорее всего ошибка в подключении хидеров (например циклическое включение хидеров)

Кстати, если ваш 'компилятор как в примере' это lcc, то он С++ не поддерживает, а поддерживает какую то дикую помесь С и С++ (этакий гибрид ужа с ежом). Я бы не стал с этой колючей проволокой связываться  smile 
 
PM MAIL   Вверх
shigorin
  Дата 12.1.2017, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.1.2017

Репутация: нет
Всего: нет



Вдруг ещё кто наткнётся поиском по
Код
undefined reference to `__cxa_vec_ctor'


Ответ сотрудников МЦСТ: "Попробуйте добавить в линковку опцию -lcxa" (в моём случае хватило export LIBS=-lcxa перед запуском autoreconf и configure); также сообщили, что планируется привести поведение в этом аспекте к соответствию gcc, но несколько позже.

Ну и на будущее: им и стоило сразу писать, уяснив, что это разница между lcc и gcc :)
PM MAIL   Вверх
shigorin
Дата 1.3.2018, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.1.2017

Репутация: нет
Всего: нет



Ещё замечание: lcc-1.23 переработали в сторону совпадения поведения с gcc; "либо, чтобы не зависеть от версии компилятора, линковать с помощью g++" (цитата опять же коллег из МЦСТ).

PS: на всякий -- портируем альт под эльбрус, уже неплохо работает.
PM MAIL   Вверх
Google
  Дата 23.5.2019, 04:14 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1566 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.