Как создать модуль и использовать его

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
prikolist
Сообщения: 38
Зарегистрирован: 19 ноя 2008, 13:09

Здравствуйте программисты! Подскажите пожалуйста, как создать собственный модуль, а потом его использовать в своей программе?
Дайте пожалуйста пример,если можно. Хочу знать как это делать. Например, сумму 2 чисел написать в модуле и использовать в основной программе. Заранне благодарен за ответ.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Что ты подразумеваешь под термином модуль? В С++ есть термин библиотека, возможно ты имел ввиду именно его. Библиотеки бывают статическими и динамическими.

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

Динамические библиотеки, которые ещё кличут дллками, не встраиваются в код, а подгружаются уже на этапе запуска программы. Плюс в том, что если несколько моделей используют одну и ту же дллку, то мы не имеем дубликацию бинарного кода. Минус в том, что поставляя exe ты должен не забыть поставить с ним и dll файл.

Динамические библиотеки могут загружаться двумя способами: статически и динамически.

Статическая загрузка dll производится автоматически перед вход в main программы специальным кодом, который генерируется компилятором. В этом случае у тебя должна иметься либка, созданная на основе dll. Такая либка не содержит код, а лишь содержит заглушки (либо прокси, это зависит от компилятора) для всех функций dll. Без такого подхода линковка exe файла не смогла бы завершиться.

Динамическая загрузка dll подразумевает ручную загрузку библиотеки прямо в коде программы и программное получения адреса функции. Для этого используются WinAPI LoadLibrary, GetProcAddress.

При работе с библиотеками есть множество тонкостей, которые я опустил (список экспортов, экспортов классов, особенности манглинга имён и т.д.). Ты можешь взять в интернете какой-либо простенький пример работы с библиотеками любым вышеуказанным способом, попробовать его и, в случае если возникнут вопросы (а они возникнут в любом случае), то можешь смело задавать их в этой теме - мы тебе обязательно поможем.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить