Я запускаю свои программы в Ubuntu, используя имена библиотек cpt. Я включаю необходимые файлы заголовков из библиотеки, но программа не работает, потому что она не может получить доступ к функциям в файле заголовка. (он показывает, что ошибка) Я должен также включить файлы .cpp, который содержит полное определение функции. Теперь я запускаю свои программы, также включая файлы .cpp, связанные с необходимыми заголовками. Почему я получаю эту ошибку, несмотря на то, что у меня есть -I/Desktop/cpt во время компиляции?Включение только файлов заголовков не запускает программу
ответ
Вы не должны включать файлы .cpp, их следует скомпилировать, вы должны указать своему компилятору, какие файлы .cpp для компиляции и где найти файлы .h, необходимые для файлов .cpp.
В моей программе я включил заголовок «linalg.hpp», а во время компиляции я использовал «g ++ lin.cpp -o linex -I/Desktop/cpt», где cpt - это папка, где находится linalg.cpp. Как скомпилировать все .cpp-файлы, которые необходимы моей программе за одно исполнение? – cleanplay
Вам нужен make-файл, make-файл состоит из всех команд, которые вы предоставили бы вашему компилятору (например, g ++). Когда вы создаете make-файл, вы можете скомпилировать свой код, просто набрав «make» в консоли. У вас также есть возможность сказать компилятору компилировать все .cpp-файлы в каталоге с помощью команды подстановки, например, для компиляции всех файлов .cpp в исходном каталоге, который вы бы набрали: $ (wildcard source/*. Cpp), ваш Makefile может выглядеть следующим образом: SRC = $ (. подстановочные источник/* CPP) LIB = -some_Lib_that_you_need всего: \t г ++ $ (SRC) -о outputName $ (LIB) – vladimirm
Возможно, вам следует связать свою программу с соответствующей общей/статической библиотекой, которая обеспечивает реализацию этих функций, объявленных в файле заголовка?
что это значит 'программа ссылку' - Вы хотите упомянуть путь Include во время компиляции или что-то еще? Я уже включаю путь к файлам .cpp, связанным с файлами заголовков, содержащими нужные мне функции. – cleanplay
Я имею в виду, что, возможно, файлы .cpp ares должны быть уже скомпилированы и предоставлены вам как библиотека, которую вы должны связать с вашим кодом при создании окончательного исполняемого файла. Это ваш случай? –
Vladimirm правильный, вам не нужно # включать файлы .cpp. файлы заголовков должны компилироваться с или без связанных с ними файлов .cpp. Все файлы .cpp связаны друг с другом в процессе, известном как связывание, но файлы заголовков предоставляют прототипы для функций во время связывания.
Вы используете угловые скобки вокруг своего #include? например
#include <mylib.h>
Если это так, вы можете рассмотреть возможность переключения на двойные кавычки, например.
#include "mylib.h"
В зависимости от того, где находятся исходные файлы, на которые вы ссылаетесь, это может быть проблемой.
Я использую "filename.h". Мои файлы заголовков и связанные с ними файлы .cpp находятся в том же каталоге, в котором я запускаю свою программу. Также во время компиляции я упоминаю путь include. Тем не менее программа не вызывает функции в файле заголовка. Я должен включить.cpp, и только тогда программа вызывает требуемые функции в файле заголовка. Это то, что я хочу знать, почему? – cleanplay
О, так это на самом деле работает, когда вы #include .cpp-файлы? –
Да, он работает тогда – cleanplay
- 1. Взаимное включение файлов заголовков
- 2. Включение заголовков заголовков/декларация переадресации
- 3. взаимное включение файлов заголовков с глобальными переменными
- 4. Run не запускает программу
- 5. Понимание заголовков и включение
- 6. .jar не запускает внешнюю программу
- 7. execvp не запускает новую программу
- 8. Как ретроактивно включить включение нескольких файлов заголовков в php
- 9. Существуют ли ограничения на включение файлов заголовков в Main.cpp?
- 10. включение файлов заголовков - относительно текущего каталога или включения каталогов?
- 11. Eclipse запускает предыдущую программу
- 12. Node.js запускает программу java?
- 13. Включение почты в программу java
- 14. Java не запускает программу в терминале java.lang.NoClassDefFoundError
- 15. my for loop не запускает мою программу
- 16. Sql Исключение не разрешает и запускает программу
- 17. PyQT гиперссылка не запускает внешнюю программу
- 18. Почему jenkins не запускает мою программу java?
- 19. Visual Studio .exe не запускает программу
- 20. Crontab не запускает программу go/golang
- 21. Почему Dev-C++ не запускает мою программу
- 22. Почему crontab не запускает мою программу Python?
- 23. Включение заголовков C в C++ revisited
- 24. DOSBOX запускает внешнюю программу windows
- 25. cmd навсегда запускает программу python
- 26. C# Application.Restart() запускает программу дважды
- 27. Пакетный файл запускает только одну программу за один раз
- 28. GCC запускает программу сборки mac?
- 29. Включение текстовых файлов в приложения?
- 30. Организация файлов заголовков C++
Я понятия не имею, что вы пытаетесь сказать. Есть много шагов между тем, что файлы заголовков и программы не работают. – Wug
Я только что отредактировал его для лучшего объяснения. – cleanplay
Вы включаете заголовки для библиотек, но не связываетесь с библиотеками? Вы получаете ошибки компоновщика «определение функции не найдено»? –