| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > ошибка __cxa_vec_ctor |
| Автор: kuvshinka 10.12.2009, 22:39 |
| подскажите пож-та - программа выдает 2 ошибки типа "undefined reference to __cxa_vec_ctor" -первый раз на строке с "}" от описания некой функции, второй - на строке объявления функции в классе....что же такое __cxa_vec_ctor и как исправить сию ошибку? в программе нет ничего подобного... |
| Автор: MAKCim 10.12.2009, 23:47 |
| если код небольшой, покажите |
| Автор: xvr 11.12.2009, 12:19 | ||||
Линковать с помощью g++
|
| Автор: kuvshinka 12.12.2009, 21:44 |
| xvr: вы совершенно правы - этот конфликт возникает при использовании массива объектов и конструктора....но почему такая ошибка появляется? их что же - нельзя использовать вместе? |
| Автор: xvr 12.12.2009, 21:56 | ||||
Это не ошибка. Это неправильная сборка программы
Если вы линкуете программу с помощью g++, то он добавляет эту библиотеку сам. Если же вы линкуете с помощью ld, то эту библиотеку надо подавать руками (что нибудь типа -lsupc++ или -lstdc++) |
| Автор: kuvshinka 15.12.2009, 20:51 |
| так что же получается - нельзя использовать вместе массив объектов и конструктор данного класса? (если можно, то как избежать вышеуказанной ошибки компоновщика....проект собирается make-файлом...) |
| Автор: xvr 15.12.2009, 22:06 | ||||||
Можно
|
| Автор: kuvshinka 16.12.2009, 21:44 | ||
Если использовать CC=/opt/e90/lcc/bin/lccs_il, то ошибок вообще не будет и создастся экзешник (если не используется массив объектов+конструктор)...при использовании CC=g++ на используемых в одном из cpp-ков переменых выдаются ошибки типа „переменная per1 was not declared in this scope“ (хотя они подключаются хидером) + ошибка ‘::main’ must return ‘int’... так что же и как надо подправить в таком make-файле, чтобы создавался экзешник даже при исп-ии массива объектов+конструктора? |
| Автор: xvr 16.12.2009, 22:13 | ||||
Не знаю, что надо подправить в этом makefile'е, т.к. не имею ни малейшего представления, что это за компилятор - lccs_il. Могу только догадываться, что это не gcc
Рекомендую поправить ошибки и перейти на g++ |
| Автор: kuvshinka 16.12.2009, 22:28 |
| хм...просто непонятно - указанный выше пример ошибок никаких не выдает - пробуешь то же самое но с g++ - эти ошибки возникают..... тогда подскажите простенький вариант make-файла по сборке многофайлового проекта (много cpp-к) с использованием компилятора g++... |
| Автор: xvr 17.12.2009, 11:39 | ||||
Поменять CC=... на CC=g++
|
| Автор: kuvshinka 17.12.2009, 22:29 |
| ну написано же выше - при изменении CC=... на CC=g++ возникают ошибки "in file..cpp „func1 was not declared in this scope“" и т.п.....но эти якобы "необъявленные"функции подключены соответствующим хидером (при исп-ии компилятора как в примере - ошибок вообще нет).... |
| Автор: xvr 17.12.2009, 22:43 | ||||
Товарищи ученые - у меня в подвале происходит непонятный стук! Прошу разобраться! Файл, где эта ошибка появляется покажите. И текст ошибки (дословно, как компилятор выдал)
Скорее всего ошибка в подключении хидеров (например циклическое включение хидеров) Кстати, если ваш 'компилятор как в примере' это lcc, то он С++ не поддерживает, а поддерживает какую то дикую помесь С и С++ (этакий гибрид ужа с ежом). Я бы не стал с этой колючей проволокой связываться |
| Автор: shigorin 12.1.2017, 12:58 | ||
Вдруг ещё кто наткнётся поиском по
Ответ сотрудников МЦСТ: "Попробуйте добавить в линковку опцию -lcxa" (в моём случае хватило export LIBS=-lcxa перед запуском autoreconf и configure); также сообщили, что планируется привести поведение в этом аспекте к соответствию gcc, но несколько позже. Ну и на будущее: им и стоило сразу писать, уяснив, что это разница между lcc и gcc :) |
| Автор: shigorin 1.3.2018, 23:44 |
| Ещё замечание: lcc-1.23 переработали в сторону совпадения поведения с gcc; "либо, чтобы не зависеть от версии компилятора, линковать с помощью g++" (цитата опять же коллег из МЦСТ). PS: на всякий -- портируем https://altlinux.org/ports/e2k, уже неплохо https://sdelanounas.ru/blog/shigorin/. |