|
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
|
||||||
Подключение .h и .cpp файлов к проекту10.06.2016, 20:28. Показов 23309. Ответов 10
Метки нет (Все метки)
Я запутался в элементарном. Но всё по порядку. Создал проект. Автоматически был создан файл Unit1.cpp.
Я добавил два файла dat.h и dat.cpp, которые заполнил кодом, а в Unit1.cpp добавил: #include "dat.h" #include "dat.cpp" и создал обработчик FormCreate(). При компиляции выдаётся ошибка: [C++ Error] dat.cpp(4): E2141 Declaration syntax error но там (dat.cpp) всё правильно, может быть неверно подключил файлы? Вот файлы:
0
|
||||||
| 10.06.2016, 20:28 | |
|
Ответы с готовыми решениями:
10
Подключение файлов к проекту Подключение и удаление файлов к проекту Подключение cpp файла |
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
||||||
| 10.06.2016, 23:18 | ||||||
Сообщение было отмечено Инженер_3 как решение
Решение
подключать надо только h-файл. cpp просто должен быть добавлен в проект.
Нажми ctrl+F12. Если этот юнит есть в списке, значит только подключай h-файл. Если его там нет, то нажми shift+F11 и добавь. Добавлено через 8 минут и
1
|
||||||
|
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
|
|
| 11.06.2016, 10:04 [ТС] | |
|
Lelik-pahan, Получается, что в h-файлах только объявления (функций, структур, статических массивов, глоб.переменных) и инициализация (статических массивов и структурных переменных/массивов).
0
|
|
|
Супер-модератор
|
|||||||
| 11.06.2016, 12:17 | |||||||
Сообщение было отмечено Инженер_3 как решение
РешениеДостаточно вынести в h-файл только extern-описание:
2
|
|||||||
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
|||
| 11.06.2016, 19:51 | |||
|
Из википедии:В языках программирования Си и C++ заголовочные файлы — основной способ подключить к программе типы данных, структуры, прототипы функций, перечислимые типы и макросы, используемые в другом модуле. По умолчанию используется расширение .h; иногда для заголовочных файлов языка C++ используют расширение .hpp. (конец цитаты, дальше уже не википедия) А вот глобальные переменные (в т.ч. массивы, экземпляры классов и структур и т.д.) в них лучше не объявлять (каюсь, в предыдущем посте дал плохой совет ). Если объявить в h-файле переменную x и затем подключить этот h-файл в двух cpp, то для каждого cpp будет создан свой x, и значения в них никак не будут связаны.
0
|
|||
|
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
|
||||||
| 13.06.2016, 17:30 [ТС] | ||||||
|
Вот(ниже) коды моих функций. Инициализацию структуры из dat.cpp(там уже ничего нет) перенёс в dat.h
Всё работает нормально, но выскакивают два предупреждения: [C++ Warning] dat.h(16): W8058 Cannot create header: initialized data in header [Linker Warning] Public symbol '_stud' defined in both module C:\...\UNIT1.OBJ and C:\...\DAT.OBJ Может я неправильно создавал dat.h ? Я делал так: "File" -> "New" -> "Other" -> окошко "New Items", выбрал "Header File" и жму "Ok". Создаётся Unit2.h, который переименовываю в dat.h при сохранении проекта в диалоговом окне.
0
|
||||||
|
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
|
|
| 13.06.2016, 21:12 [ТС] | |
|
volvo, до меня с трудом дошло, что можно инициализировать уже объявленную переменную.
Но всё работает, спасибо.
0
|
|
|
16 / 16 / 10
Регистрация: 20.11.2015
Сообщений: 305
|
|||||||||||
| 23.04.2017, 18:00 | |||||||||||
|
У меня похожий вопрос, только не ругайте сильно, я новичок
Создал класс в отдельном файле (кстати, правильно создавать класс в .h или .cpp?)
п.с. в MVS это получилось, а в Embarcadero Builder-е почему-то нет
0
|
|||||||||||
|
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
|
||||||
| 23.04.2017, 19:30 | ||||||
|
Tlya, класс называется SUCHNOST. Откуда взялся тип G_class ?
0
|
||||||
|
16 / 16 / 10
Регистрация: 20.11.2015
Сообщений: 305
|
|
| 23.04.2017, 19:37 | |
|
Lelik-pahan, Как стыдно то за свою невнимательность...)
0
|
|
| 23.04.2017, 19:37 | |
|
Помогаю со студенческими работами здесь
11
Подключение к проекту своей библиотеки Подключение к проекту x64 библиотеки Подключение библиотеки ffmpeg к проекту Подключение к проекту Skype4com.dll Один *.h и несколько *.cpp файлов - Linker Warning Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|