Создание и использование статических библиотек .lib в visual studio.

Рубрика: Visual Studio, Дата: 8 December, 2013, Автор:

Здорова господа!!! Мы знаем что существует два вида библиотек статические .lib и динамические .dll, от как раз в этом посту попытаюсь рассказать за статическую lib они обычно имеют большой размер и  функции из этой библиотеки вроде как переноситься в сам exe файл, ее вроде раз к проекту подключаешь, а дальше уже с самим exe файлом ее портировать не нужно. Ну что ж начнем, для начала разберемся как создавать статическую библиотеку. Открываем visual studio у меня visual studio 2013 premium, у вас может быть любая другая, выбираем: “Создать новый проект”, в открывшемся окне выбираем “консольное приложение виндовс 32”, также вводим название проекта я ввел MyNewLib и указываем путь где мы сохраним проект.

img1

Дальше нажимаем ок и мы переходим к следующему окошку.

img2

Жмем кнопку далее и мы попадаем в следующее окошко, где выбираем “Статическая библиотека” и убираем галочку “предварительно откомпилированные заголовок”img3

Все дальше жмем готово и у нас создается новый проект в котором будут создаваться не программы exe а статические библиотеки lib.

Дальше в этот проект MyNewLib добавляем два файла один заголовочный я его назвал function.h от его код:

#ifndef FUNCTION_H
#define FUNCTION_H

void func_hellow();
void func_privet();

#endif

и файл function.cpp:

#include <iostream>
using std::cout;
using std::endl;

#include "function.h";

void func_hellow()
{
	cout <<"Hellow world gacpada"<<endl;
}

void func_privet()
{
	cout <<"privet eb tu bl9 mazafaka bich"<<endl;
}

Включаем из в проект, а дальше компилируем нажимаем клавиши ctrl+alt+F7 и у нас создается в папке Debug или Release смотря какой режим выбрать, конкретно я выбрал режим Debug и у меня в папке Debug создался файл библиотеки MyNewLib.lib ну и все на этом можно сказать все мы научились создавать статические библиотеки, я еще сразу скажу что для того что бы создавать качественные библиотеки нам нужно б было каждую функцию записать в отдельный файл, это для того нужно делать что б в MyNewLib.lib было создано несколько объектных файлов .obj в данном случае мы могли бы файл function.сpp разбить на два файла допустим файл f1.cpp в котором записать определение функции func_hellow() и на файл f2.cpp в нем записать определение второй функции func_privet(), тогда у нас будет правильная библиотека и если мы в проекте будем использовать одну функцию, допустим func_hellow(), а func_privet() нет, то объектный код .obj с функцией func_privet() не добавиться , а только .obj func_hellow() будет добавляться, я так думаю это фажный момент, возможно ниже попробуем смоделировать два разных варианта создания библиотек. Просто при использовании библиотеки в которой каждой функции пренадлежит отдельный объектный код, только включаются те функции которые используются, а если все функции в одном .obj то естественно включатся все функции и даже те которые мы не используем.

И так идем  дальше и попытаемся сейчас мы подключить библиотеку к нашему проекту, что для этого нужно? создаем новый проект пустой, проект будет пусть консольный вин 32 и создаем в нем файл main.cpp со следующим кодом:

#include <iostream>
using std::cout;
using std::endl;

#include "function.h"

int main()
{
	func_hellow();
	func_privet();

	return 0;
}

Что мы сделали мы включили в проект заголовочный файл function.h в котором находятся определения функций и вызываем функции, конечно если мы сейчас это все скомпилируем, то у нас вылезет ошибка так как мы реально не добавили файл function.h ну и не добавили саму библиотеку в проект, что для этого нужно, а все очень просто копируем файлы MyNewLib.lib и файл function.h в папку с файлами нашего проекта – это та папка где находится наш файл main.cpp, просто полазте по каталогам проекта поищите. И так вы их скопировали в папку с файлами проекта и что дальше? А дальше нужно их уже включить в проект, я сам например не знал как включать файлы копировал их в папку и ничего не происходило, они не добавлялись просто нужно как оказывается их включить, есть горячие клавиши Shift+Alt+A или смотрите рисунок куда нужно заходить, просто для новичков это бывает проблема добавить либу в проект, кругом пишут скопируй либу в проект и все, но забывают добавить что ее нужно еще и включить в проект.

img4

Дальше у вас должно появится окошко.img5

Выбираете файлы и нажимаете добавить и все файлы добавлены, при открытии обозревателя решений у вас они должны быть видны из него.Безымянный

Все из рисунка видно что статическая библиотека MyNewLib.lib у нас добавлена и заголовочный файл с определениями функций из библиотеки MyNewLib.lib включен это файл function.h, теперь нажимаем Ctrl+F5 и у нас все прекрасно компилируется.

И так мы научились работать со статическими либами в visual studio.

От так как то создаются и подключаются статические либы, дальше я напишу еще пост как создавать и использовать второй вид библиотек это динамические библиотеки .dll 🙂 .

[youtube]http://www.youtube.com/watch?v=IqFdatdem64[/youtube]

Комментарии:

  • Максим

    Спасибо большое, все получилось!)

  • Андрей

    За описание процесса создания библиотеки – спасибо, но описание к ней … местами чувство, что не статью читаешь, а разговор гопников (не в обиду). Надеюсь исправите этот нюанс 🙂


Оставить комментарий

Your email address will not be published. Required fields are marked *