|
16 / 16 / 1
Регистрация: 15.03.2009
Сообщений: 94
|
||||||||||||||||
linked error28.09.2009, 00:19. Показов 3519. Ответов 28
Метки нет (Все метки)
только начал программу писать и сразу траблы. Но по порядку.
main.cpp:
[Linker error] undefined reference to `rusout(char*)' DMC компилирует, но при запуске говорит что это приложение не является win32. Прошу сразу заметить прога ещё далека от завершение и потому пусть вас не смущает её несколько неказистая конструкция. Собственно вопрос: Кто виноват и что делать? ЗЫ: заранее спасибо за игнор\ответ\мат в ответ...
0
|
||||||||||||||||
| 28.09.2009, 00:19 | |
|
Ответы с готовыми решениями:
28
Ошибка Linked Error в wxDev C++ [Linked Error] Unresolved External Linked List: error C2360: initialization of 'vp' is skipped by 'case' label |
|
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
|||||||
| 28.09.2009, 00:24 | |||||||
|
G-Cat, ну наверное потому, что файл rusout.cpp не подключается никак. В файле newfunc.h используется объявление, но никакого описания функции rusout()
Замени
0
|
|||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|
| 28.09.2009, 00:52 | |
|
И это... В качестве факультативного дополнения.
Файл newfunc.h вообще убрать может? А строчку #include "newfunc.h" закомменитить... Ибо к чему плодить лишние сущности? Простите мне моё невежество.
0
|
|
|
16 / 16 / 1
Регистрация: 15.03.2009
Сообщений: 94
|
|
| 28.09.2009, 01:43 [ТС] | |
|
подождите, ну не с бухты барахты же я всё ето написал...а по анологии, вот часть задания на следующую пару:
Создать многофайловый проект. Он должен включать в себя головной модуль, в котором должна будет вызвана функция, сама эта функция определена в другом файле, и должен быть создан *.h файл в котором будет объявлена эта функция. Не отрицаю, я мог что то и напутать в сделаном мною выше коде, но я даже в Дейтеле видел пример подобного написания. Правда там в головном модуле инициализировался класс и там не одна строчка, как у мня была, а поболее, но так же не было никакой привязки ко второму *.cpp файлу, ни в головном модуле, ни в основном файле....покрайне мере я не заметил
0
|
|
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
|
| 28.09.2009, 02:44 | |
|
А когда создаёшь проект,там должна быть опция "подключить файлы к проекту",может,всё дело в том,что линкер получает неправильную команду от среды разработки? Поищи там эту опцию добавить файлы.
0
|
|
|
16 / 16 / 1
Регистрация: 15.03.2009
Сообщений: 94
|
|
| 28.09.2009, 03:12 [ТС] | |
|
теперь постоянный Error 1 (компилятор Dev Cpp)
но мне вот больше нравится работать в DMC, но он не графический...не подскажете как в нём можно добавлять файлы...ну хотя бы на примере GCC...
0
|
|
|
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
|||||||||||||
| 28.09.2009, 10:55 | |||||||||||||
![]() вообще должно быть как-то вот так: main.cpp
newfunc.h
0
|
|||||||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|
| 28.09.2009, 15:29 | |
|
Прошу предыдущего написавшего внести ясность в этот вопрос.
...Я так понимаю, подключать можно чуть-ли не какой угодно файл, хоть без расширения, лишь бы содержание правильно было написано по крайней мере DEV C++ работает так. Но остановимся на .cpp и .h То есть если в этом примере оформить подключаемый файл как .cpp, то тут один плюс- его можно отлаживать отдельно от исполняемой программы. То есть работай с ним и компилируй себе, ищи ошибки. Если всё будет правильно, тогда линкёр выдаст одну ошибку- что не может найти функцию main. После этого подключай файл к проекту и работай. А если оформить его с расширением .h, то у меня файлы с таким расширением по отдельности не компилируются, а только вкупе со всем проектом. То есть при каждой его отладке приходится подключать его ко всему проекту. Это нехорошо. Кто как для себя решил вопрос- файлы с каким расширением подключать? Может, стандарт какой есть на этот случай?
0
|
|
|
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
|
|
| 29.09.2009, 10:39 | |
|
kravam, подключаются как правило .h файлы. А вообще ты понимаешь смысл препроцессорной директивы #include ? Это эквивалентно ВСТАВИТЬ. То есть, перед обработкой, идет непосредственное вставление кода из подключаемого файла, в исходный листинг.
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|
| 29.09.2009, 11:39 | |
|
Конечно, понимаю. Это, кстати, много где описано. И это понять просто. Вставить это значит вставить и ничего более.
Я всего лишь выразил недоумение по поводу того, что везде наблюдаю подключаемые файлы *h, и нигде не наблюдаю *сpp (речь идёт об авторских файлах, а не поставляемых вместе со средой программирования). Ибо последние проще отлаживать потому, что их можно отлаживать отдельно от всего проекта. Добавлено через 14 минут В общем, думал я и пришёл к выводу, что нам ничего не запрещает подключать файлы *сpp. Или подключение *h стандарт? Тогда другое дело.
0
|
|
|
16 / 16 / 1
Регистрация: 15.03.2009
Сообщений: 94
|
|
| 29.09.2009, 12:08 [ТС] | |
|
http://ru.wikipedia.org/wiki/Заголовочный_файл
http://www.citforum.ru/programming/cpp/gl4.shtml Следующее эмпирическое правило относительно того, что следует, а что не следует помещать в заголовочные файлы, является не требованием языка, а просто предложением по разумному использованию аппарата #include. В заголовочном файле могут содержаться: Определения типов struct point { int x, y; } Описания функций extern int strlen(const char*); Определения inline-функций inline char get() { return *p++; } Описания данных extern int a; Определения констант const float pi = 3.141593 Перечисления enum bool { false, true }; Директивы include #include Определения макросов #define Case break;case Комментарии /* проверка на конец файла */ но никогда: Определения обычных функций char get() { return *p++; } Определения данных int a; Определения сложных константных объектов const tbl[] = { /* ... */ } ну а теперь кто нибудь мне всё таки объяснит как связать файлы main.cpp, func.h и func.cpp вместе, что бы небыло ошибок линковки?)))
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|
| 29.09.2009, 12:33 | |
|
Это из википедии "В заголовочном файле модуля объявляется каждая функция, объект и тип данных, являющиеся частью интерфейса вызова модуля"
По второй ссылке я не нашёл ответа на свой вопрос. То есть там всё хорошо расписано, но не написано что нельзя подключать файлы *c (в моём случае *cpp) в программу. При чём: на протяжении всего примера автор активно использует как те, и другие, осознавая пользу от обоих. Но представляя главный файл, подключенных файлов *с мы там не наблюдаем. Без объяснений. *h подключаются, а *c нет. В общем, пишем сложные функции, нуждающиеся в отдельной компиляции в файлах *cpp и подключаем их. Тем более, что так и сказано: В заголовочных файлах не могут содержаться определения обычных функций. Всё.
1
|
|
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
||||||||||||||||||||||
| 29.09.2009, 13:50 | ||||||||||||||||||||||
|
main.cpp
rusout.h
rusout.cpp
я из консоли (той, которая к VS прилагается - в ней переменные окружения и прочая байда задаётся) скомпилил
Проблема у Вас с функцией была. Она как int объявлена, а ничего не возвращала.
1
|
||||||||||||||||||||||
|
|
|||
| 29.09.2009, 14:34 | |||
|
Monte-Cristo, ну зачем ты людям неправильные советы даёшь. Исходники у него были написаны правильно. Только на компиляцию нужно подавать оба исходника *.cpp, а у него подаётся только один. Для подтверждения догадки можно внести в файл rusout.cpp синтаксическую ошибку. При компиляции на это место не будет ругаться (потому что файл не попадает в компиляцию). #pragma, в 5-м посте написал, что нужно делать
Добавлено через 49 секунд Добавлено через 1 минуту
1
|
|||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
|||||||
| 29.09.2009, 14:55 | |||||||
1
|
|||||||
|
|
||
| 29.09.2009, 15:03 | ||
|
1
|
||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
||
| 29.09.2009, 15:20 | ||
А по сути - да, видимо, просто компилирует ТС свою програмку неправильно...
1
|
||
|
Модератор
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
|
||
| 29.09.2009, 16:20 | ||
|
А ошибаются люди, чтоб другие их поправляли, а не говорили, что и так сойдёт...
1
|
||
|
|
|||
| 29.09.2009, 16:26 | |||
|
1
|
|||
| 29.09.2009, 16:26 | |
|
Помогаю со студенческими работами здесь
20
C-style Linked List Linked List описание Linked List класс
Проверить программу с linked list Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|