Сокрытие реализации с использованием файлов lib и dll? - PullRequest
1 голос
/ 30 декабря 2011

В C ++, что такое файлы .lib и .dll, как они могут быть созданы и являются ли они способом, позволяющим пользователю получить доступ к функциям, реализованным в файлах .cpp, без фактического наличия этих файлов?

В частности, я написал код, содержащий несколько классов, которые я хочу дать кому-то другому для использования, но я не хочу давать им файл .cpp, содержащий мою реализацию.

PS: я используюCodeBlocks.

1 Ответ

6 голосов
/ 30 декабря 2011

Файлы lib и dll - это библиотеки, которые создаются обычным способом, со специальными переключателями для компилятора, чтобы указать, какой тип выходного файла вы хотите.

Файл lib - это статическая библиотека, которая однажды, во время компоновки, связывается с вашей основной программой cpp, чтобы получить автономный исполняемый файл, которому больше ничего не нужно запускать.DLL (Dynamic Link Library) связана с вашим основным приложением cpp каждый раз, когда это приложение загружается, таким образом, «динамически».Нет, пользователь не может получить исходный код вашего cpp из любого из этих двух видов библиотек.Файл lib аналогичен файлу Linux / Unix .a;dll аналогичен файлу .so Linux / Unix.

Ваш исходный код полностью безопасен, с одним исключением:

Любые имена глобальных переменных или функций, которые доступны вашему главному cppПриложение присутствует в файле lib и в dll в текстовом виде.Если кто-то исследует файл lib или dll, он может видеть эти глобальные имена и имена функций в виде простого текста: только сами имена - только имена и ничего более.

Ваши источники совершенно безопасны.Вы бы выдавали свой exe-файл плюс dll, если бы он был связан динамически;или просто exe, если бы он был связан статически, что было бы моим предпочтением на вашем месте.

Мне кажется, я правильно сказал это.Если нет, я уверен, что кто-то здесь на SO будет рад рассказать мне все об этом: -)

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...