Информация об изменениях

Сообщение Re: заголовочный файл от 11.10.2014 18:16

Изменено 11.10.2014 19:03 Evgeniy Skvortsov

Здравствуйте, -n1l-, Вы писали:

N>Добрый вечер. Все никак не могу понять одну банальнейшую вещь в C++.

N>Вот хотим мы скомпилировать исполняемый файл. Тут все просто, заголовочные файлы инклудятся в нужное место с объявлениями нужных функций, а мы пяшем от счастья.
N>Но что касается библиотек. Как я могу использовать заголовочный файл для подключения функции из библиотеки? Ведь библиотека — это же откомпилированный код?

Или я не понял вопрос или что еще либо.

Заголовочный файл нужен для объявления имен функций, ту как ты заметил все просто и мы пляшем от счастья.
Когда дело после компиляции доходит до сборки бинарного файла (екзешника, длл, библиотеки или аналогов под *nix) чем уже заведует линковщик (c++ тут вообще ни коим боком), то надо явно указать путь этого самого "откомпилированного кода"

Тут есть фишка, бывают так называемые "хидер онли" библиотеки, обычно это что-то на шаблонах (на то есть свои причины). Суть этих библиотек в том, что весь код размещен в этих заголовочных файлах и никакие другие файлы не нужны для успешной компиляции и сборки проекта.

В частности в VC++ нередки ситуации когда ты пишешь #include <blablabla.h>, юзаешь в коде функции из этого файла, а проект не собирается.
И спасает директива #pragma comment(lib , "blablabla.lib") (это понятное дело не единственный способ)
То есть прагмой ты указываешь линкеру откуда брать скомпилированный код для объявленных в заголовках функциях.

В чем сложность вопроса я не понял.

Да и вообще, имхо, этот вопрос не для с++, поскольку обсуждаемая проблема касается исключительно линкера.
Re: заголовочный файл
Здравствуйте, -n1l-, Вы писали:

N>Добрый вечер. Все никак не могу понять одну банальнейшую вещь в C++.

N>Вот хотим мы скомпилировать исполняемый файл. Тут все просто, заголовочные файлы инклудятся в нужное место с объявлениями нужных функций, а мы пяшем от счастья.
N>Но что касается библиотек. Как я могу использовать заголовочный файл для подключения функции из библиотеки? Ведь библиотека — это же откомпилированный код?

Или я не понял вопрос или что еще либо.

Заголовочный файл нужен для объявления имен функций, тут, как ты заметил все просто и мы пляшем от счастья.
Когда дело после компиляции доходит до сборки бинарного файла (екзешника, длл, библиотеки или аналогов под *nix) чем уже заведует линковщик (c++ тут вообще ни коим боком), то надо явно указать путь этого самого "откомпилированного кода"

Тут есть фишка, бывают так называемые "хидер онли" библиотеки, обычно это что-то на шаблонах (на то есть свои причины). Суть этих библиотек в том, что весь код размещен в этих заголовочных файлах и никакие другие файлы не нужны для успешной компиляции и сборки проекта.

В частности в VC++ нередки ситуации когда ты пишешь #include <blablabla.h>, юзаешь в коде функции из этого файла, а проект не собирается.
И спасает директива #pragma comment(lib , "blablabla.lib") (это понятное дело не единственный способ)
То есть прагмой ты указываешь линкеру откуда брать скомпилированный код для объявленных в заголовках функциях.

В чем сложность вопроса я не понял.

Да и вообще, имхо, этот вопрос не для с++, поскольку обсуждаемая проблема касается исключительно линкера.