6 / 6 / 1
Регистрация: 31.01.2012
Сообщений: 134
|
||||||||||||||||
1 | ||||||||||||||||
Деление кода на .h .cpp30.07.2012, 07:45. Показов 4777. Ответов 25
Метки нет (Все метки)
Подскажите пожалуйста как правильно поделить код! Обязательно чтобы были заголовочные файлы и файлы .cpp
main.cpp
In function `main': [Linker error] undefined reference to `show(int)' ld returned 1 exit status
0
|
30.07.2012, 07:45 | |
Ответы с готовыми решениями:
25
Разделение кода на cpp и h файлы Файл исходного кода *.cpp создаётся в utf-8 Есть три файла. файл main.cpp и Source.cpp знают только Header.h, так как он подключен. как же подключается Source.cpp Мешает ли разделение кода на объявление (.h) и определение (.cpp) inline оптимизации? |
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||||||||||||
30.07.2012, 08:16 | 2 | |||||||||||||||
main.cpp:
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
30.07.2012, 08:17 | 3 |
В качестве альтернативы Include Guard для заголовочных файлов можно использовать pragma once, но такой способ поддерживается не всеми компиляторами
0
|
6 / 6 / 1
Регистрация: 31.01.2012
Сообщений: 134
|
|
30.07.2012, 08:19 [ТС] | 4 |
Сделал как написали, пишет такую же ошибку:
In function `main': [Linker error] undefined reference to `show(int)' ld returned 1 exit status
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
30.07.2012, 08:24 | 5 |
!Андрей!, значит, файл queue.cpp не линкуется. Почему это происходит, зависит от того, какой у тебя компилятор и используешь/не используешь ли ты IDE.
0
|
6 / 6 / 1
Регистрация: 31.01.2012
Сообщений: 134
|
|
30.07.2012, 08:26 [ТС] | 6 |
Использую Dev-C++
Что такое IDE не имею понятия)) а как-нибудь это можно поправить чтобы можно было работать спокойно дальше? Ну и чтобы компилилось всё на других компах
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
30.07.2012, 08:29 | 7 |
Это и есть IDE. Насколько я знаю, в качестве компилятора там по умолчанию идет MinGW g++ (да и по ошибкам похоже). Судя по всему, файл queue.cpp просто не был добавлен в проект, т.к. среда не передает его линкеру.
Попробуй из консоли выполнить в директории проекта: Код
g++ -o out.exe main.cpp queue.cpp
1
|
6 / 6 / 1
Регистрация: 31.01.2012
Сообщений: 134
|
|
30.07.2012, 08:34 [ТС] | 8 |
Блин, если честно - не очень понял что нужно сделать) Сначала попробовал в командную строку забить
g++ -o out.exe main.cpp queue.cpp - он мне написал: g++ не является внутренней командой... ну и на всякий случай bat файл создал - тоже самое пишет, ну бат - в директории конечно находится)
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
30.07.2012, 08:39 | 9 |
это потому, что
Ну ладно, оставим пока увлекательные приключения типа поиска исполняемых файлов MinGW и редактирование переменных окружения в Windows. Попробуй создать проект заново и убедись, что файл queue.cpp добавлен к проекту
0
|
6 / 6 / 1
Регистрация: 31.01.2012
Сообщений: 134
|
|
30.07.2012, 08:40 [ТС] | 10 |
Вот что Visual Studio пишет:
1>------ Построение начато: проект: fileeeeees, Конфигурация: Debug Win32 ------ 1>Построение начато 30.07.2012 8:39:23. 1>PrepareForBuild: 1> Создание каталога "D:\Projects\fileeeeees\Debug\". 1>InitializeBuildStatus: 1> Создание "Debug\fileeeeees.unsuccessfulbuild", так как было задано "AlwaysCreate". 1>ClCompile: 1> stdafx.cpp 1> queue.cpp 1>d:\projects\fileeeeees\fileeeeees\queue.cpp(2): warning C4627: #include "queue.h": пропущен при поиске использования предкомпилированного заголовка 1> Добавление директивы в "StdAfx.h" или перестройка предкомпилированного заголовка 1>d:\projects\fileeeeees\fileeeeees\queue.cpp(9): fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "StdAfx.h"" в источник. 1> fileeeeees.cpp 1> Создание кода... 1> 1>СБОЙ построения. 1> 1>Затраченное время: 00:00:02.14 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
30.07.2012, 08:44 | 12 |
Это уже заморочки студии. Либо добавь строчку #include "StdAfx.h" в начало файла main.cpp, либо создавай действительно пустой проект.
Не по теме: Учись читать сообщения компилятора, они не просто так выводятся
1
|
6 / 6 / 1
Регистрация: 31.01.2012
Сообщений: 134
|
|
30.07.2012, 08:46 [ТС] | 14 |
Вооооот, вроде всё так делаю, всё в одной папке находится и т.п.
код внутри - точно такой как скинули:
0
|
6 / 6 / 1
Регистрация: 31.01.2012
Сообщений: 134
|
|
30.07.2012, 08:47 [ТС] | 15 |
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
30.07.2012, 08:48 | 16 |
!Андрей!, ну вон у товарища выше все успешно компилируется
1
|
70 / 64 / 5
Регистрация: 09.06.2012
Сообщений: 291
|
|
30.07.2012, 08:51 | 17 |
!Андрей!, Вы в проект должны добавить и в папку,Мне кажется на 99% что вы в проект не добавили queue
1
|
6 / 6 / 1
Регистрация: 31.01.2012
Сообщений: 134
|
|
30.07.2012, 08:53 [ТС] | 19 |
В Visual Studio - Заработало когда я добавил строку #include "stdafx.h" в файл queue.cpp
А вот с Dev-C++ - не разобрался
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
30.07.2012, 08:54 | 20 |
0
|
30.07.2012, 08:54 | |
30.07.2012, 08:54 | |
Помогаю со студенческими работами здесь
20
Перевод кода с Delphi, деление нацело .m to .cpp левосторонее деление матриц Вынос кода из CPP во внешний файл Очередность исполнения кода в нескольких cpp файлах Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |