2012-06-05 2 views
45

Я пишу этот код для чтения 3 файлов, TM - размер квадратной матрицы, LER Число строк массива и от последнего значения определите неквадратную матрицу (ler/2) * 2undefined ссылка на `std :: ios_base :: Init :: Init() '

Затем ... код читает файл с некоторыми отношениями, все являются числами и назначаются C [ler].

Затем ... C [ler] назначается B [ler/2] [2].

Эти координаты для каждой строки в B [ler/2] [2] назначаются а и b.

а и Ь строка и столбец матрицы A [тм] [тм], где для добавления 1.

моего кода аварии, и я не вижу, что ошибка.

Когда я пытаюсь скомпилировать, компилятор НКУ -g -o MatSim MatSim.cpp запрос:

/usr/include/c++/4.6/iostream:75: undefined reference to `std::ios_base::Init::Init()' 
/usr/include/c++/4.6/iostream:75: undefined reference to `std::ios_base::Init::~Init()' 
collect2: ld returned 1 exit status 

Кроме того, когда я пытаюсь скомпилировать, компилятор f77 -o MatSim MatSim .cpp запрос:

/tmp/cc6ewlkf.o: In function `__static_initialization_and_destruction_0(int, int)': 
MatSim.cpp:(.text+0x17ad4a): undefined reference to `std::ios_base::Init::Init()' 
MatSim.cpp:(.text+0x17ad4f): undefined reference to `std::ios_base::Init::~Init()' 
collect2: ld returned 1 exit status 

Решение

Основной проблемой была проблема с библиотекой. Скомпилируйте свой код, используя:

g++ -g -o MatSim MatSim.cpp -lstdc 

Все еще не работает? Установка библиотек:

sudo apt-get install g++-multilib 
+0

Означает ли компилятор ошибку? Вы уверены, что вы правы, когда говорите «компилятор дал статус выхода 1», а не программа дала статус выхода 1? – Celeritas

+0

Celeritas, да, это то, что я получаю сразу после выполнения любого из компиляторов [gcc o f77] –

+0

Возможный дубликат [Невозможно найти библиотеки C++ в unix] (http: // stackoverflow.com/questions/10867164/cant-find-c-libraries-on-unix) –

ответ

88

Вы можете решить эту проблему несколькими способами:

  • Использование g++ в смену gcc: g++ -g -o MatSim MatSim.cpp
  • Добавить -lstdc++: gcc -g -o MatSim MatSim.cpp -lstdc++
  • Заменить <string.h> на <string>

Это проблема компоновщика, а не проблема с компилятором. Та же проблема рассматривается в вопросе iostream linker error - он объясняет, что происходит.

+0

Благодаря Райнер ... Я попробовал ваше предложение и я получаю: _G ++ -g -o MatSim MatSim.cpp -lstdc /USR/бен/л.д.: не может найти -lstdc collect2: л.д. возвращается 1 выход status_ –

+0

Если вы перейдете с дополнительным вариантом библиотеки, вам следует использовать '-lstdC++', а не' -lstdc'. Но если вы используете g ++, тогда нет необходимости добавлять эту библиотеку. –

+0

Спасибо Reinier !!!! вы и Джонатан Леффлер просвещали мой код, и теперь я действительно могу идти вперед !!!! –

6

Большинство этих ошибок компоновщика возникают из-за недостающих библиотек.

Я добавил libstdC++. 6.dylib в моем проекте-> Цели-> Сборка фаз-> Ссылка двоичная с библиотеками.

Это решило для меня на Xcode 6.3.2 для прошивки 8.3

Ура!

+0

Спасибо за разделяя это, человек. Ты просто решил мою проблему. Я пытался собрать цель для теста единства в моем проекте, используя gtest-1.7.0 Framework и Xcode Version 6.3.2. –

+0

Рад, что это сработало :) –

+0

спасибо, что вы его работали :) спас мое время –

Смежные вопросы