Форум программистов, компьютерный форум, киберфорум
Кроссплатфор­менная разработка
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/23: Рейтинг темы: голосов - 23, средняя оценка - 4.65
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
1

почему компилятор g++ 4.5.0 не видит тип "vector"?

17.09.2011, 00:13. Показов 4541. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Друзья! Старый добрый g++ 3.4.2, аж 2004 года видел всё, работал без сучка и задоринки безо всяких дополнительных опций g++ 4.5.0 спотыкается на таком безобидном коде, и не первый раз уже:

C++
1
2
3
4
5
6
#include <vector>
using namespace std;
int main () {
 vector<int> myvector;
 return 0;
}
Не помогает и
C++
1
 std::vector<int> myvector;
компилятор выдаёт ошибку:
[Linker error] undefined reference to `__gxx_personality_v0'

И где мне брать такую функцию `__gxx_personality_v0'?

Добавлено через 20 минут
Благо ума хватило не удалять старый DEV, а сархивировать, если чё, на него вернусь. Старый конь борозды не испортит!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2011, 00:13
Ответы с готовыми решениями:

Почему vector v{vector{1, 2} }; имеет тип vector<int>
std::vector v{std::vector{1, 2} }; Почему v выводиться как vector&lt;int&gt;

Компилятор не видит vector
#include &lt;vector&gt; using std::vector; vector&lt;double&gt; v; выбивает ошибку вектор не стд, вектор не...

Почему компилятор не видит класс?
Либо я уже заработался, либо это какой-то мега-глюк. Не понимаю почему пишет ошибку что не видно...

Почему компилятор не видит идентификатор?
Вот ошибки Ошибка (активно) E0260 отсутствует явный тип (требуется &quot;int&quot;) Game...

16
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
17.09.2011, 00:26 2
kravam, а вектор-то здесь при чем?
Сделай HelloWorld и посмотри, что получится...
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
17.09.2011, 00:42  [ТС] 3
Ничё себе- при чём тут вектор... Чё мне нельзя STL в своих проектах использовать? Так-то я HelloWorld умею писать уже. Впрочем, HelloWorld работает.

Добавлено через 10 минут
Вообще всё это более чем странно. Создаётся впечатление, что моя IDE использует часть утилит нового пакета, а часть старого. Короче, сам чёрт ногу сломит.
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
17.09.2011, 00:55 4
как минимум надо видеть вывод компилятора/линковщика
build log или что-нибудь в этом духе

Добавлено через 8 минут
под логом подразумевается нечто вроде
Bash
1
2
3
make: Entering directory `android_src'
target thumb C: libbluedroid <= system/bluetooth/bluedroid/bluetooth.c
prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc  -I system/bluetooth/bluedroid/include   -I system/bluetooth/bluez-clean-headers   -I system/bluetooth/bluedroid   -I out/target/product/generic/obj/SHARED_LIBRARIES/libbluedroid_intermediates   -I dalvik/libnativehelper/include/nativehelper   -I system/core/include   -I hardware/libhardware/include   -I hardware/libhardware_legacy/include   -I hardware/ril/include   -I dalvik/libnativehelper/include   -I frameworks/base/include   -I frameworks/base/opengl/include   -I frameworks/base/native/include   -I external/skia/include   -I out/target/product/generic/obj/include   -I bionic/libc/arch-arm/include   -I bionic/libc/include   -I bionic/libstdc++/include   -I bionic/libc/kernel/common   -I bionic/libc/kernel/arch-arm   -I bionic/libm/include   -I bionic/libm/include/arch/arm   -I bionic/libthread_db/include  -c  -fno-exceptions -Wno-multichar -msoft-float -fpic -ffunction-sections -funwind-tables -fstack-protector -Wa,--noexecstack -Werror=format-security -fno-short-enums -march=armv5te -mtune=xscale -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -include system/core/include/arch/linux-arm/AndroidConfig.h -I system/core/include/arch/linux-arm/ -Wno-psabi -mthumb-interwork -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -DNDEBUG -g -Wstrict-aliasing=2 -finline-functions -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers -DNDEBUG -UDEBUG -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64       -MD -o out/target/product/generic/obj/SHARED_LIBRARIES/libbluedroid_intermediates/bluetooth.o system/bluetooth/bluedroid/bluetooth.c
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
17.09.2011, 00:56  [ТС] 5
Вот такие ошибки и больше ничего:
[Linker error] undefined reference to `__gxx_personality_v0'
ld returned 1 exit status
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
17.09.2011, 00:58 6
полная командная строка, или гугл с экстрасенсами
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
17.09.2011, 01:22  [ТС] 7
g++.exe "E:\vso_moio\Программирование_на_C++\Новая папка (9)\ra_0.cpp" -o "E:\vso_moio\Программирование_на_C++\Новая папка (9)\ra_0.exe" -I"E:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"E:\Dev-Cpp\include\c++\3.4.2\backward" -I"E:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"E:\Dev-Cpp\include\c++\3.4.2" -I"E:\Dev-Cpp\include" -L"E:\Dev-Cpp\lib" -static


Исходник называется ra_0.cpp. опцию -static добавил я согласной этой теме
MinGW версии 4.5.0 содержит libgcc_s_dw2-1.dll без которой ни одна скомпилированная прога не запускается. А как же запускать проги на других машинах?
остальное всё по умолчанию

Добавлено через 1 минуту
Это я приаттачивался OllyDbg, ставил бряк на CreateProcess, жал на F9 и смотрел параметры CreateProcess
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
17.09.2011, 02:44 8
Вот интересно. В теме вроде про 4.5.0 речь, а в приведённой строке сплошь каталоги 3.4.2.
Ничего не понимаю. Так кто спотыкается, кто нет?
0
174 / 170 / 19
Регистрация: 31.08.2010
Сообщений: 573
17.09.2011, 08:10 9
Советую скачать нормальный компилятор, например mingw-7.2. Скачиваете, запускаете установочный файл (он один mingw-7.2.exe), указываете путь, куда хотите положить mingw, лучше всего 'c:\mingw', прописываете путь c:\mingw\bin в PATH.

Это версия GCC 4.6.1

Для примера предлагаю запустить следующий код:

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <vector>
 
using std::cout;
using std::endl;
using std::vector;
 
int main() {
  int my_array[5] = {1, 2, 3, 4, 5};
 
  for (int &x: my_array) x *= 2;
  for (int &x: my_array) cout << x << " ";
  cout << endl;
 
  vector<int> vec1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 
  for (vector<int>::const_iterator it = vec1.begin(); it != vec1.end(); ++it) {
    cout << *it << " ";
  }
 
  cout << endl;
 
  for (auto it = vec1.begin(); it != vec1.end(); ++it) {
    cout << *it << " ";
  }
 
  cout << endl;
 
  for (int x: vec1) cout << x << " ";
  return 0;
}
компилировать следующей командной строкой:

$ g++ -std=c++0x -omain main.cpp
$ main.exe
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
17.09.2011, 15:39  [ТС] 10
Цитата Сообщение от grizlik78 Посмотреть сообщение
Вот интересно. В теме вроде про 4.5.0 речь, а в приведённой строке сплошь каталоги 3.4.2.
Ничего не понимаю. Так кто спотыкается, кто нет?
Так я кожу-то в DEV-Cpp
Я установил туда MInGw, он себя "прописал", а всё, что касается 3.4.2 оставил, например в папке
E:\Dev-Cpp\include полностью обновил инклуды, но оставил папку E:\Dev-Cpp\include\c++\3.4.2
Вот он видать использует эти 3.4.2, не знаю, почему. Вот я тоже не понимаю, почему он не пообновлял к матери все эти 3.4.2

А если просто использовать установленный mingw без IDE то этот код компилится нормально, то есть устанавлваю, mingw в левую папку и компилю в консоли g++ и так далее.

Добавлено через 1 минуту
TheAthlete, скачанный мной всего годичной давности, нет оснований думать, что 7.2 будет "работать" лучше, как вариант только разве что оставить.
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
17.09.2011, 15:47 11
MinGW ничего про Dev-CPP не знает, так что пути в среде, наверное, вручную надо менять.
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
17.09.2011, 16:19  [ТС] 12
Так пути-то те же самые остались!
Про DEV-C++, да, не знает наверное. Но в процессе работы запускается множество утилит. И Бог его знает, где он их ищет.
А пути остались те же самые, ага.
Так, инклуды он запихал в

E:\Dev-Cpp\include- ну, так они там и были, этот путь менять не надо
E:\Dev-Cpp\bin- сюда он запихал экзешники- так они и были здесь (g++ в частности), путь не меняем
E:\Dev-Cpp\lib- тоже ничё не меняем.

...Я щас попробую обновить mingw через менеджер пакетов Dev-Cpp. Может, получится.
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
17.09.2011, 23:47 13
Цитата Сообщение от kravam Посмотреть сообщение
Ничё себе- при чём тут вектор... Чё мне нельзя STL в своих проектах использовать? Так-то я HelloWorld умею писать уже. Впрочем, HelloWorld работает.

Добавлено через 10 минут
Вообще всё это более чем странно. Создаётся впечатление, что моя IDE использует часть утилит нового пакета, а часть старого. Короче, сам чёрт ногу сломит.
В том-то и дело, что показанные тобой ошибки никак не ассоциируются именно с вектором.
А другие контейнеры видит?
Ведь это ошибка на стадии линковки. А это чаще всего бывает, если версии стандартных библиотек не соответствуют.
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
18.09.2011, 06:39  [ТС] 14
Чему не соответсвуют?
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
18.09.2011, 11:40 15
Цитата Сообщение от kravam Посмотреть сообщение
Чему не соответсвуют?
Ну, например, компилятор - новый, а библиотеки - старые.
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
18.09.2011, 12:10 16
Цитата Сообщение от kravam Посмотреть сообщение
И где мне брать такую функцию `__gxx_personality_v0'?
Вектор тут вообще не при чём. Эта функция содержится во внутренней библиотеке. Точно не помню, в которой именно, но скорее всего в libgcc_eh. Такой ошибка как правило говорит о том, что используется корявая сборка компилятора. Однако пост #7 говорит о том, что ты берёшь компилятор одной версии, а run-time поддержка используется от компилятора другой версии

Цитата Сообщение от kravam Посмотреть сообщение
А если просто использовать установленный mingw без IDE то этот код компилится нормально, то есть устанавлваю, mingw в левую папку и компилю в консоли g++ и так далее
Значит IDE подсовывает лишние опции. Или, как вариант, IDE не знает о том, что ты подменил компилятор. Или ты ему указал про то, что подменился бинарник компилятора, но не указал, где лежит новая run-time поддержка

Вкратце у тебя происходит некоррекнтый запуск компилятора из-под IDE. Если есть возможность установить штатным образом IDE с нужной версией комплятора, то лучше переустанови всё с нуля
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
18.09.2011, 18:21  [ТС] 17
Я сделал так: там можно установить DEV-Cpp без компилятора, то есть оболочку одну, я её установил. Так, а потом стал аккуратно-аккуратно добавлять к ней пакеты, то есть ищу в обновлениях какие есть пакеты и устанавливаю их (откидывая экзотические)

Получается, тот код компилится, узнал много сюрпризов. Например, тот mingw, что предлагает IDE совсем не тот, который лежит на официальном сайте MinGW- в первом отсутствует windows.h; далее пакеты g++ не предлагается DEV C++, а g++.exe лежит в пакете gcc-c++; далее, файл stddef.h, который, кстати имеет отношение к vector тоже автоматом не устанавливается, а надо установить gcc-core. В общем, дело пошло. Все трудности из-за того, наверное, что разработчики Этой IDE ею больше не занимаются, жаль, хорошая IDE. Буду сам помалу.

Добавлено через 13 минут
Естественно, скачиваю всё новое, 2010 года а иначе незачем было даже браться за это дело.
0
18.09.2011, 18:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2011, 18:21
Помогаю со студенческими работами здесь

Почему компилятор не видит переменную [c]
public static void main(String args) { int k, c, j, a, b, d; j = 10; b = 2000; ...

Почему компилятор говорит main.cpp|237|error: 'vector' is not a type| (code:blocks, windows)
Здравствуйте! Столкнулся с непонятной мне ошибкой на куске кода int colorfig(vector&lt;double&gt;...

Почему компилятор не понимает тип bool?
#include &lt;stdio.h&gt; #include &lt;iostream .h&gt; #include &lt;fstream.h&gt; #include &lt;iomanip.h&gt; #include...

Почему компилятор не распознает тип ofstream?
Почему не определяет ofstream хотя библиотека #include &quot;fstream&quot; есть П.5.18.Правил Запрещено...

Почему компилятор не видит поле класса
class der&lt;Tematic&gt;:IComparer&lt;Tematic&gt;{ public int Compare(Tematic obj1, Tematic...

Почему компилятор не видит мои переменные?
/* * To change this license header, choose License Headers in Project Properties. * To change...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru