|
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 19
|
|
Разделение кода на несколько файлов18.03.2011, 17:53. Показов 32072. Ответов 14
Метки нет (Все метки)
• Имеем основной cpp файл с main.
• Имеем код некоторых нужных функций • Есть указание реализовать эти функции не в основном cpp, а в другом. • Вопрос - как? В студии добавляю еще один cpp, в него пишу некую функцию, но при сборке\построении этот второй cpp не участвует в ней... Ну и, соответственно, не собирается сам проект, т.к. "%functionname% не найдена"...
0
|
|
| 18.03.2011, 17:53 | |
|
Ответы с готовыми решениями:
14
Разделение кода на несколько файлов Разделение кода на несколько файлов Visual C++ Разделение кода на несколько файлов |
|
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
|
||||||||||||||||||||||||||
| 18.03.2011, 18:18 | ||||||||||||||||||||||||||
|
Вариант 1 (рекомендуемый):
2
|
||||||||||||||||||||||||||
|
1 / 1 / 0
Регистрация: 06.10.2011
Сообщений: 15
|
|
| 15.04.2012, 19:58 | |
|
делаю и первым способом, и вторым - выдает такие вот ошибки:
fatal error LNK1120: 1 unresolved externals E:\Doc\Visual Studio 2008\Projects\3\Debu\3.exe 1 error LNK2019: unresolved external symbol "int __cdecl GetBar(void)" (?GetBar@@YAHXZ) referenced in function _main 4.obj скажите, пожалуйста, может я что не так делаю(хотя делаю все так, как написал CyBOSSeR), или в его сообщении ошибки есть?
0
|
|
|
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
|
|
| 15.04.2012, 20:02 | |
|
делайте первым
0
|
|
|
Модератор
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
|
|
| 15.04.2012, 20:03 | |
|
ОБА файла (foo.cpp и main.cpp) нужно подключить к проекту.
1
|
|
|
1 / 1 / 0
Регистрация: 06.10.2011
Сообщений: 15
|
||||||
| 15.04.2012, 20:12 | ||||||
|
panicwassano,
все равно эти ошибки( делаю так: создал файл foo.cpp. В него добавил это:
В главном .cpp файле добавляю #include "foo.h" и printf("%d", GetBar()); что я не так делаю? Добавлено через 2 минуты zss, так я же в главном .cpp работаю, зачем его подключать? или я Вас не так понял?
0
|
||||||
|
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
|
|
| 15.04.2012, 20:17 | |
|
нужно подключить файл непосредственно к проекту!!!а не просто сделать include, в менеджере проектов или как там его
1
|
|
|
1 / 1 / 0
Регистрация: 06.10.2011
Сообщений: 15
|
|
| 15.04.2012, 20:23 | |
|
0
|
|
|
Модератор
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
|
|
| 15.04.2012, 20:24 | |
|
Именно, что не так.
Вы похоже, вообще проект не создаете. Откройте Visual Studio. Файл->Создать->Проект. Выберите Win32 в левой колонке, Консольное приложение - в правой. Внизу напишите имя проекта и укажите папку, в которую проект записать. Нажимаем 2 раза "Далее", Отмечаем галочкой "пустой проект". Нажимаем "готово". Слева (или справа) Откроется окно "Обозреватель решения (Solution Explorer)". В нем в папку Файлы исходного кода и надо добавить Ваши два файла. Щелкаем правой кнопкой мыши по этой папке и выбираем Добавить. Находим, где лежат эти файлы и добавляем (можно оба сразу, если держать кнопку ctrl).
3
|
|
|
1 / 1 / 0
Регистрация: 06.10.2011
Сообщений: 15
|
||||||
| 15.04.2012, 22:03 | ||||||
|
zss,
большое Вам спасибо, нет... БОЛЬШОЕ!))) понял свою ошибку, теперь все работает Добавлено через 14 минут zss, еще вопрос появился: если в файле foo.cpp простая функция, то все работает, а если хотя бы такая:
Добавлено через 1 час 15 минут или надо #include <stdio.h> прописать и в файле foo.cpp?
1
|
||||||
|
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
|
|
| 15.04.2012, 22:23 | |
|
попробуйте да приписать, вообще если такой много файловый проект, проще сделать прекомпилированный заголовок в проекте и подключать его, вместо кучи инклудов
1
|
|
|
Модератор
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
|
|
| 16.04.2012, 21:04 | |
|
А причем тут main.cpp,
foo.cpp компилируется независимо от main.cpp поэтому туда тоже надо добавить #include <stdio.h>
1
|
|
|
1 / 1 / 0
Регистрация: 06.10.2011
Сообщений: 15
|
|
| 17.04.2012, 21:32 | |
|
Еще такую ошибку выдает: например, в foo.cpp использую массив ms, поэтому надо его здесь объявить, иначе неизвестная переменная. Но этот массив объявлен и в main.cpp, а поэтому при компиляции пишет:
- обнаружен многократно определенный символ - один или более - ms уже определен в foo.obj
0
|
|
|
Модератор
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
|
|
| 17.04.2012, 21:36 | |
|
Лучше все нужные переменные передавать через параметры функций,
Но уж если приспичит использовать глобальные переменные, то в одном из файлов объявляете обычным образом, а в остальных с префиксом extern .
1
|
|
|
1 / 1 / 0
Регистрация: 06.10.2011
Сообщений: 15
|
||||||
| 19.04.2012, 19:38 | ||||||
|
Помогите, пожалуйста. Вроде бы и понятно, что вы мне советовали, какие ошибки исправляли, но не получается(
0
|
||||||
| 19.04.2012, 19:38 | |
|
Помогаю со студенческими работами здесь
15
Разделение программы на несколько файлов Разделение mp4 на несколько файлов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|