Install boost windows visual studio

Boost libraries are some of the famous ones in the C++ world.

They contain tons of functionalities but aren’t so easy to use or even understand.

First things first, let’s try to install it in on our dear Windows 10 operating system (it should work as well on Windows 11).

And test it with Visual Studio 2017 and Visual Studio 2019.

Ready? Let’s do it in this Boost installation tutorial for Windows 10.

First of all

We are going to set up our computer in order to use the following libraries and software:

  • Visual Studio 2017 (feel free to use Visual Studio 2019, more information in this tutorial)
  • Boost 1.71.0 libraries with the binaries (boost_1_71_0-msvc-14.1-64.exe)

Note the 14.1 version what is corresponding to MSVC 141 in order to be used with MSVC 2017.

For the MSVC 2019, please do the same but with the 14.2 version what is related to the MSVC 142 and download the Boost 1.77.0 version.

Setting up Boost libraries

Downloading and installing Boost libraries

The Boost libraries are in general available directly without building anything (only by including headers).

But some libraries have to be built before being able to use them.

That’s the case for example for the Boost.Python or Boost.Regex libraries.

It’s possible to build these libraries by yourself but to be honest the Boost documentation isn’t really crystal clear and some links are even broken.

So to avoid a headache from the sky we are going to use the binaries directly downloaded from SourceForge (link above).

This executable isn’t really an installation but more an extraction.

Indeed nothing will be changed on your Windows registries, only a new directory will be created with some files within.

So, once the executable donwloaded, Windows will show you a blue window with a message alerting that this is an unrecognized app.

Click on More info at the end of this message to make the Run anyway push button appear.

For MVSC 2017, install it in the following location:

  • C:\soft\boost_1_71_0

For MVSC 2019, install it in the following location:

  • C:\soft\boost_1_77_0

In this directory you can now see another one called lib64-msvc-14.1/ (for MSVC 2017) or  lib64-msvc-14.2 (for MSVC 2019) in which there are built libraries, all that in an x64 environment.

Building the Boost.Build (b2) engine (optional feature for this tutorial)

If you want to build libraries from Boost on your own way you’ll have to use the Boost.Build tool.

It was in the past called bjam but it’s now called b2.

So these 2 tools are exactly the same but the latter is the new version used with Boost.Build.

When you download Boost from the official website, b2 isn’t installed.

You have to do it by yourself.

Actually it’s quite easy.

Open a console from the Boost directory (depending on your MSVC version 141 or 142):

  • C:\soft\boost_1_71_0

or

  • C:\soft\boost_1_77_0

Then type the following command:

.\bootstrap.bat

And you’ll have on your console after few seconds this message:

PS C:\soft\boost_1_71_0> .\bootstrap.bat

Building Boost.Build engine

Generating Boost.Build configuration in project-config.jam for msvc...

Bootstrapping is done. To build, run:

    .\b2

To adjust configuration, edit 'project-config.jam'.

Further information:

    - Command line help:

    .\b2 --help

    - Getting started guide:

    http://boost.org/more/getting_started/windows.html

    - Boost.Build documentation:

    http://www.boost.org/build/

In the same directory you can now see the b2.exe tool.

We don’t need it for now, just let it for the future.

Environment variables for Boost

We have to set our Environment variables.

So add the 2 following paths for MSVC 2017:

  • C:\soft\boost_1_71_0\
  • C:\soft\boost_1_71_0\lib64-msvc-14.1\

And for MSVC 2019:

  • C:\soft\boost_1_77_0\
  • C:\soft\boost_1_77_0\lib64-msvc-14.2\

If you are using Windows 10 it’s not so unusual to use Visual Studio as well.

So let’s set it up to use Boost.

Setting up Visual Studio

Visual Studio platform toolset

If your Visual Studio instance was already opened then close it and open it again to get the new Environment variable modifications.

We are going to use Visual Studio 2017 so the binaries version are 14.1.

Or the Visual Studio 2019 with binaries 14.2.

Indeed, each version of Visual Studio has its own platform toolset.

For example:

  • Visual Studio 2017 has a platform toolset 14.1 (often msvc-141)
  • Visual Studio 2019 has a platform toolset 14.2 (often msvc-142)

Yes it’s quite vague and not so logical but Miscrosoft is Microsoft.

So download the right one for your Visual Studio version, otherwise it won’t work.

Anyway let’s set up all that tools.

I’ll let you install Visual Studio where you want.

We’ll just have to set the include and library directories directly from Visual Studio.

Let’s start by creating a Windows Console Application from Visual Studio.

From Visual Studio > File > New Project > Installed > Visual C++ > Windows Desktop > Windows Console Application.

Let’s name this project for example like this:

  • Name: BadprogTutorial
  • Location: C:\dev\c++\boost\

Setting the Visual Studio project platform

First thing is now to change the project platform in the Configuration manager:

From Visual Studio > Select the BadprogTutorial.cpp file >  Project > BadprogTutorial Properties… > On upper right click the Configuration Mananger… push button > Change Active solution platform from x86 to x64 > Close.

Then still in the BadprogTutorial Property Pages, at top center, change the platform from Win32 to x64.

Then click OK.

You can stay in Debug mode or change it to Release (it won’t change anything for our tutorial).

Setting Visual Studio include paths for Boost

First let’s set the includes.

From Visual Studio > Select the BadprogTutorial.cpp file > Project BadprogTutorial Properties… > Configuration Properties > C/C++ > General Additional Include Directories > Edit > Add the following line:

  • C:\soft\boost_1_71_0\

or

  • C:\soft\boost_1_77_0\

Then OK > Apply > OK.

Setting Visual Studio library paths for Boost

We’ve now to set the libraries.

Same thing but with the linker:

From Visual Studio > Select the BadprogTutorial.cpp file > Project BadprogTutorial Properties… > Configuration Properties > Linker > General Additional Library Directories > Edit > Add the following line:

  • C:\soft\boost_1_71_0\lib64-msvc-14.1\

or

  • C:\soft\boost_1_77_0\lib64-msvc-14.2\

Then OK > Apply > OK.

Let’s code a bit

In our BadprogTutorial.cpp file let’s add the following code:

BadprogTutorial.cpp

// badprog.com

#include «pch.h»

#include <boost/date_time/gregorian/gregorian.hpp>

#include <iostream>

//

namespace bg = boost::gregorian;

// —————————————————————————-

//

// —————————————————————————-

int main() {

  // date as simple ISO string

std::string stringDate(«20191110»);

bg::date todayDate(bg::from_undelimited_string(stringDate));

  // 

bg::date::ymd_type ymdDate    = todayDate.year_month_day();

bg::greg_weekday weekdayDate  = todayDate.day_of_week();

  //

std::cout 

    << «Tutorial made with love from Badprog.com  :D  on «

    << weekdayDate.as_long_string() << » «

    << ymdDate.day << » «

    << ymdDate.month.as_long_string() << » «

    << ymdDate.year

    << std::endl;

}

Build and run

Build and run your program, you should see the following appears on your console:

Tutorial made with love from Badprog.com :D on Sunday 10 November 2019

Conclusion

Now that you have installed Boost, plenty of libraries are now available for you.

A lot of fun for the future.

Good job, you did it. 

tag — The tag feature is used to customize the name of the generated files. The value should have the form:

@rulename

where rulename should be a name of a rule with the following signature:

rule tag ( name : type ? : property-set )

The rule will be called for each target with the default name computed by Boost.Build, the type of the target, and property set. The rule can either return a string that must be used as the name of the target, or an empty string, in which case the default name will be used.

Most typical use of the tag feature is to encode build properties or library version in library target names. You should take care to return non-empty string from the tag rule only for types you care about — otherwise, you might end up modifying names of object files, generated header file and other targets for which changing names does not make sense.

* debug-symbols=on/off.The debug-symbols feature specifies if produced object files, executables, and libraries should include debugging information. Typically, the value of this feature is implicitly set by the variant feature, but it can be explicitly specified by the user. The most common usage is to build release variant with debugging information.

runtime-debuggingon, off.The feature runtime-debugging the feature specifies if produced object files, executables, and libraries should include behavior useful only for debugging, such as asserts. Typically, the value of this feature is implicit the feature variant, but it can be explicitly specified by the user. The most common usage is to build release variant with debugging output.

target-osThe operating system for which the code is to be generated. The compiler you used should be the compiler for that operating system. This option causes Boost.Build to use naming conventions suitable for that operating system, and adjust build process accordingly. For example, with gcc, it controls if import libraries are produced for shared libraries or not.

The complete list of possible values for this feature is: aix, bsd, cygwin, darwin, freebsd, hpux, iphone, linux, netbsd, openbsd, osf, qnx, qnxnto, sgi, solaris, unix, unixware, windows.

See the section called “Cross-compilation” for details of cross-compilation

architecture The architecture features specify the general processor family to generate code for.

instruction-set  The instruction-set specifies for which specific instruction set the code should be generated. The code, in general, might not run on processors with older/different instruction sets.While Boost.Build allows a large set of possible values for this features, whether a given value works depends on which compiler you use. Please see the section called “C++ Compilers” for details.

address-model= 32/64.The address-model specifies if 32-bit or 64-bit code should be generated by the compiler. Whether this feature works depends on the used compiler, its version, how the compiler is configured, and the values of the architecture instruction-set features. Please see the section called “C++ Compilers” for details.

c++-template-depth=Any positive integer.This feature allows configuring a C++ compiler with the maximal template instantiation depth parameter. Specific toolsets may or may not provide support for this feature depending on whether their compilers provide a corresponding command-line option.

Note: Due to some internal details in the current Boost.Build implementation it is not possible to have features whose valid values are all positive integer. As a workaround a large set of allowed values has been defined for this feature and, if a different one is needed, user can easily add it by calling the feature.extend rule.

embed-manifestAllowed values: on, off.

This feature is specific to the msvc toolset (see the section called “Microsoft Visual C++”), and controls whether the manifest files should be embedded inside executables and shared libraries, or placed alongside them. This feature corresponds to the IDE option found in the project settings dialog, under → → → .

embed-manifest-fileThis feature is specific to the msvc toolset (see the section called “Microsoft Visual C++”), and controls which manifest files should be embedded inside executables and shared libraries. This feature corresponds to the IDE option found in the project settings dialog, under → → → .

Cover image for The definitive guide on compiling and linking Boost C++ libraries for Visual Studio projects

Recently, a requirement came up to migrate a legacy C++ codebase, containing quite a few of custom implemented functionalities, into a more robust architecture. After spending some time at searching, we decided to include the Boost libraries, due to the large set of utilities they offer. 

Most of the C++ Boost libraries are header-only; they consist entirely of header files, and require no separately-compiled library binaries. However, there are some libraries that need to be built separately. The «Getting Started» guide on Boost website is quite informative, but do not provide clear guidance on how to build for multiple architectures and targets (debug/release). We’re using Visual Studio as our IDE and finding the best way to build those binaries was quite tiresome. 

For that reason, we dedicated this guide on how to build and link the C++ Boost libraries in Visual Studio projects.

Downloading the Boost libraries

To get the latest version of Boost (or any other version for that matter), go to the official download page. We are targeting Windows platforms, so we need to choose the respective version. The «Getting Started» guide recommends downloading the 7-Zip archive.

We no longer recommend .zip files for Boost because they are twice as large as the equivalent .7z files. We don’t recommend using Windows’ built-in decompression as it can be painfully slow for large archives. - »Getting Started on Windows», www.boost.org

The current release, as of this day, is version 1.76.0, but the methodology we are going to follow works (and will continue to work in the future) for any release.

Alt Text

After we successfully downloaded the archive, we need to extract the containing folder into the desired location. 

The documentation assumes that the path for any library version is inside C:\Program Files\boost, so we’re going to respect that. Create a directory called boost inside C:\Program Files\ and extract the archive there.

Alt Text

Building the binaries

The Boost libraries includes a really nice build system, which we are definitely going to use it. The build system is triggered from the command line. First we have to open the cmd window and navigate into the root folder of the Boost library.

Alt Text

Then we have to initialize the build system by running the bootstrap.bat file.

After bootstraping is done, it’s time to build the actual binaries. Remember what we said earlier: We have to build

  • artifacts for x64 architecture
  • artifacts for x86 architecture
  • artifacts for static linking (i.e. .lib files)
  • artifacts for dynamic linking (i.e. .dll files)
  • release artifacts
  • debug artifacts

In general, we need to trigger 8 builds. Fortunately for us, the build command allow us to specify multiple targets in one build. In the end, we’ll only trigger two builds, one for each architecture type.

Building for x86 architecture

Run the following command in you terminal:

b2 --build-dir=build\x86 address-model=32 threading=multi --stagedir=.\bin\x86 --toolset=msvc -j 16 link=static,shared runtime-link=static,shared --variant=debug,release

Enter fullscreen mode

Exit fullscreen mode

Alt Text

This command will build and place the binaries into C:\Program Files\boost\boost_1_76_0\bin\x86\lib\. The output will contain all the required files we might need for most of our projects.

Building Debug for x64 architecture

Execute the following command on you terminal:

b2 --build-dir=build\x64 address-model=64 threading=multi --stagedir=.\bin\x64 --toolset=msvc -j 8 link=static,shared runtime-link=static,shared --variant=debug,release

Enter fullscreen mode

Exit fullscreen mode

Alt Text

This command will build and place the binaries into C:\Program Files\boost\boost_1_76_0\bin\x64\lib\. As before, the output will contain all the required files we might need for most of our projects.

Explaining the build command arguments

Let’s take a quick look on the arguments used in the previous two commands.

  • --build-dir: Specify the directory to place all the intermediate files while building.
  • address-model: Specify the targeting address model.
  • threading: Compile Boost to be thread aware. (see this question on stackoverflow for more info.)
  • --stage-dir: the directory where the binaries will be placed.
  • --toolset: The compiler and linker that will be used to build the artifacts. We chose msvc; this should be the default on Windows, but in case we have more compilers installed on the system, it’s better to explicitly define it.
  • -j: how many threads to use for building. This can drastically improve the build times on multi-threading environments, i.e. most modern machines.
  • link: declare a library target.
  • runtime-link: linking statically/dynamically to the C++ standard library and compiler runtime support libraries.
  • --variant: Build debug or release version of the binaries.

Including the Boost libraries on Visual Studio

To be able to work with the Boost libraries in Visual Studio, we have to define the root path, that is C:\Program Files\boost\boost_1_76_0, into each individual project properties. In this guide, we use Visual Studio 2019, but this process can be applied to older versions as well. To include the libraries, do the following:

On a Visual Studio solution → Select the project you want to add the library into → Right Click → «Properties»

The properties window should now be open. An example is attached bellow:

Alt Text

Before we proceed take a moment to ensure that both «Configuration» and «Platform» values are selected as shown in the following screenshot. This will apply the changes we’re going to make into all the platforms.

Alt Text

We’re going to modify the «Additional Include Directories» option of «C/C++» → «General» property.

Select the drop-down button and then click < Edit.. >.

Now we have to add the library path and hit OK.

The option value should be updated as shown in the following screenshot.

Alt Text

Note that %(AdditionalIncludeDirectories) macro was automatically included in the value. This is expected and includes some default values specified by the system.

We are ready to work with most of the Boost libraries. We can include them in our source code without any issues. However, if we use libraries that require linking (like boost/chrono, boost/thread, etc) we have to link the binaries we built earlier to the linker.

Linking the Boost libraries on Visual Studio

This is the final step to our journey. The only think we have to do, is to tell the linker to include our binaries. Like before, open the properties window:

On a Visual Studio solution → Select the project you want to add the library → Right Click → «Properties»

Alt Text

Before we proceed take a moment to ensure that the «Configuration» and «Platform» values are selected as shown in the following screenshot. This will apply the changes we’re going to make into all the platforms.

Alt Text

We’re going to modify the «Additional Library Directories» option of «Linker» → «General» property.

(Note: In case your project builds a static library, the «Linker» menu will be shown as «Librarian«.)

Alt Text

Select the drop-down button and then click < Edit.. >.

Alt Text

Add the following value: C:\Program Files\boost\boost_1_76_0\bin\$(PlatformTarget)\lib, and hit OK.

Alt Text

The property value should be updated as shown in the following screenshot.

Alt Text

Take a quick note on $(PlatformTarget) macro. Recall when we built our targets and created two directories, one for each architecture. This macro defines the correct folder for use depending on the selected build platform.

Note that %(AdditionalLibraryDirectories) macro was automatically included in the value. This is expected and includes some default values specified by the system.

Testing the boost libraries

We should now be able to build and run our projects in both x86 and x64 architectures, targeting both debug and release versions. In case you want a quick, test program, we provide the following example from boost/chrono library.

Bellow is a running example screenshot using Debug and x64:

Alt Text

Conclusion

In this guide we described how we can set up Boost C++ libraries in Windows and link them into Visual Studio projects. We tried to be as detailed as possible in our explanation. We wanted to provide a unified reference for future readers who might encounter the same problems we did.

As a final note, we inform the readers that we tested all the steps provided in this article, on multiple projects, without any issues. However, if you have a different set-up, that might or might not cause problems. If this is the case, feel free to comment your question or point any ambiguity you have encountered. 

I have plans to write more articles regarding project organization and software development in the future. Feel free to post suggestions and articles ideas you might want to read about.

Опишем, как установить библиотеку Boost для среды Visual Studio.

Шаг 1. Скачиваем исходные коды

Как правило, используется последняя версия библиотеки Boost. Если вам нужна более ранняя версия, то следует учитывать, что компилятор VS 2012 поддерживается с версии 1.52. Другими словами, вы не сможете использовать версию более раннюю чем 1.52 на VS 2012. Придётся установить более раннюю версию VS.

Ссылку на последнюю версию можно найти на странице http://www.boost.org/users/download. Обычно это ссылка ведёт на репозиторий вида http://sourceforge.net/projects/boost/files/boost/1.54.0/, откуда скачивается файл с именем boost_1_54_0.zip или другим в зависимости от версии.

Шаг 2. Компиляция

Я буду выполнять установку библиотеки в папку d:\Projects\Libs\boost_1_54_0\. Если у вас другая папка, то все команды изменяются соответствующим образом.

Распаковываем архив boost_1_54_0.zip в папку d:\Projects\Libs\boost_1_54_0\. Из командного интерпретатора выполним следующие команды:

cd /d d:\Projects\Libs\boost_1_54_0\
bootstrap.bat

Если требуется изменить конфигурацию библиотеки, то именно сейчас нужно изменить файл ‘project-config.jam’. Если вы не знаете об этом, то оставляйте файл конфигурации как есть.

Далее запускаем процесс компиляции, введя команду b2.
Процесс компиляции длится около 20 минут. В конце отобразится информации о путях подключения библиотеки:

The Boost C++ Libraries were successfully built!

The following directory should be added to compiler include paths:

    D:/Projects/Libs/boost_1_54_0

The following directory should be added to linker library paths:

    D:\Projects\Libs\boost_1_54_0\stage\lib

Можно использовать утилиту BlueGo, которая позволяет упростить процесс компиляции.

Шаг 3. Создание символьной ссылки

Поскольку будут выходить новые версии библиотеки, то каждый раз изменять пути с D:\Projects\Libs\boost_1_54_0\stage\lib на D:\Projects\Libs\boost_1_55_0\stage\lib и т.д. будет несколько утомительно.

Я предлагаю использовать символьные ссылки, а точнее точки соединения для папок:

cd /d d:\Projects\Libs\
mklink /j boost boost_1_54_0

Далее я буду использовать D:\Projects\Libs\boost вместо D:\Projects\Libs\boost_1_54_0.

Шаг 4. Создание проекта в Visual Studio

Для примера http://www.boost.org/doc/libs/1_54_0/doc/html/date_time/examples.html будем использовать «Консольное приложение Win32».

Заходим в свойства проекта и изменяем:

В разделе «Каталоги VC++» для всех конфигураций:

  • в элемент «Каталоги включения» добавляем «d:\Projects\Libs\boost»;
  • в элемент «Каталоги библиотек» добавляем «d:\Projects\Libs\boost\libs»;

Далее аналогичным образом в разделе «Компоновщик > Общие» для всех конфигураций:

  • в элемент «Дополнительные каталоги библиотек» добавляем «d:\Projects\Libs\boost_1_54_0\stage\lib»;

в разделе «Компоновщик > Ввод» для конфигурации Debug:

  • в элемент «Дополнительные зависимости» добавляем
    libboost_atomic-vc110-mt-gd-1_54.lib
    libboost_chrono-vc110-mt-gd-1_54.lib
    libboost_context-vc110-mt-gd-1_54.lib
    libboost_coroutine-vc110-mt-gd-1_54.lib
    libboost_date_time-vc110-mt-gd-1_54.lib
    libboost_exception-vc110-mt-gd-1_54.lib
    libboost_filesystem-vc110-mt-gd-1_54.lib
    libboost_graph-vc110-mt-gd-1_54.lib
    libboost_iostreams-vc110-mt-gd-1_54.lib
    libboost_locale-vc110-mt-gd-1_54.lib
    libboost_log-vc110-mt-gd-1_54.lib
    libboost_log_setup-vc110-mt-gd-1_54.lib
    libboost_math_c99-vc110-mt-gd-1_54.lib
    libboost_math_c99f-vc110-mt-gd-1_54.lib
    libboost_math_c99l-vc110-mt-gd-1_54.lib
    libboost_math_tr1-vc110-mt-gd-1_54.lib
    libboost_math_tr1f-vc110-mt-gd-1_54.lib
    libboost_math_tr1l-vc110-mt-gd-1_54.lib
    libboost_prg_exec_monitor-vc110-mt-gd-1_54.lib
    libboost_program_options-vc110-mt-gd-1_54.lib
    libboost_random-vc110-mt-gd-1_54.lib
    libboost_regex-vc110-mt-gd-1_54.lib
    libboost_serialization-vc110-mt-gd-1_54.lib
    libboost_signals-vc110-mt-gd-1_54.lib
    libboost_system-vc110-mt-gd-1_54.lib
    libboost_test_exec_monitor-vc110-mt-gd-1_54.lib
    libboost_thread-vc110-mt-gd-1_54.lib
    libboost_timer-vc110-mt-gd-1_54.lib
    libboost_unit_test_framework-vc110-mt-gd-1_54.lib
    libboost_wave-vc110-mt-gd-1_54.lib
    libboost_wserialization-vc110-mt-gd-1_54.lib

в разделе «Компоновщик > Ввод» для конфигурации Release:

  • в элемент «Дополнительные зависимости» добавляем
    libboost_atomic-vc110-mt-1_54.lib
    libboost_chrono-vc110-mt-1_54.lib
    libboost_context-vc110-mt-1_54.lib
    libboost_coroutine-vc110-mt-1_54.lib
    libboost_date_time-vc110-mt-1_54.lib
    libboost_exception-vc110-mt-1_54.lib
    libboost_filesystem-vc110-mt-1_54.lib
    libboost_graph-vc110-mt-1_54.lib
    libboost_iostreams-vc110-mt-1_54.lib
    libboost_locale-vc110-mt-1_54.lib
    libboost_log_setup-vc110-mt-1_54.lib
    libboost_log-vc110-mt-1_54.lib
    libboost_math_c99f-vc110-mt-1_54.lib
    libboost_math_c99l-vc110-mt-1_54.lib
    libboost_math_c99-vc110-mt-1_54.lib
    libboost_math_tr1f-vc110-mt-1_54.lib
    libboost_math_tr1l-vc110-mt-1_54.lib
    libboost_math_tr1-vc110-mt-1_54.lib
    libboost_prg_exec_monitor-vc110-mt-1_54.lib
    libboost_program_options-vc110-mt-1_54.lib
    libboost_random-vc110-mt-1_54.lib
    libboost_regex-vc110-mt-1_54.lib
    libboost_serialization-vc110-mt-1_54.lib
    libboost_signals-vc110-mt-1_54.lib
    libboost_system-vc110-mt-1_54.lib
    libboost_test_exec_monitor-vc110-mt-1_54.lib
    libboost_thread-vc110-mt-1_54.lib
    libboost_timer-vc110-mt-1_54.lib
    libboost_unit_test_framework-vc110-mt-1_54.lib
    libboost_wave-vc110-mt-1_54.lib
    libboost_wserialization-vc110-mt-1_54.lib

Внимание! Имена могут меняться в зависимости от версии и опций сборки. Для сборки Debug используйте маску *gd*, а для Release оставшиеся.

Теперь проект успешно компилируется:

Вот и всё.

См. также: http://www.boost.org/users/download/

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Медиа креатор тулс windows 10 это
  • Как запустить приложение в режиме совместимости с windows 7
  • Почему вылетает видеоредактор windows 10
  • Возможность подключения ipv4 или ipv6 отключен как включить windows 10
  • Pgadmin создание базы данных windows