Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

В чём разница между динамической и статической линковкой библиотеки? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ неизвестная ошибка http://www.cyberforum.ru/cpp-beginners/thread855556.html
Помогите с кодом который из книги по изучению С++: Вот неработающий код: #include <iostream> using namespace std; #include <conio.h> enum itsaWord { NO, YES };
C++ Что такое орган управления ? Подскажите пожалуйста не могу понять орган управления и дочерние окно - это одно и то же или нет ? http://www.cyberforum.ru/cpp-beginners/thread855554.html
Из двух стеков с упорядоченными по возрастанию элементами создать новый стек с упорядоченными элементами, не удаляя исходные стеки C++
Из двух стеков равной длины с вещественными числами создать 1 стек с квадратами значений элементов исходных стеков, не удаляя исходные стеки. При создании нового стека элемент выбирается по очереди...
C++ Сортировка методом отбора
Помогите реализовать сортировку отбора отрицательных элементов в столбцах двумерного массива. На примере: Столбец 3 -1 2 -4 -3 После 3
C++ Подробнее о классах http://www.cyberforum.ru/cpp-beginners/thread855541.html
Извините если я не туда зашел. Я например хочу освоить на хорошем уровне классы. Ну в дальнейшем для написания начальных уровней игр, ну то есть(змейка. бильярд с примитивной физикой...). Подскажите...
C++ Определить самое короткое слово и первые вхождения слов Вообщем задание такое: Дана строка слов, разделенных пробелами. Определите самое короткое слово. Оставьте в строке только первые вхождения слов. Собственно первую часть программы сделал, все... подробнее

Показать сообщение отдельно
Убежденный
Системный программист
Эксперт С++
15633 / 7143 / 1130
Регистрация: 02.05.2013
Сообщений: 11,582
Записей в блоге: 1
Завершенные тесты: 1
04.05.2013, 18:35
Что значит "неявно" ? dll - это всегда динамическая компоновка.
Но здесь есть еще один термин - связывание, оно может быть ранним или поздним.
При раннем связывании вы создаете жесткую ссылку на dll на этапе компоновки, и
эта dll загружается в адресное пространство процесса во время его запуска.
А при позднем связывании программа вызывает LoadLibrary(Ex)/GetProcAddress,
загружая dll уже в процессе выполнения.

Например, я могу написать так:
C++
1
2
3
4
5
6
7
#include <Windows.h>
 
int main()
{
    MessageBoxW(NULL, L"Hello, World !", L"Message", MB_OK);
    return 0;
}
Это будет раннее связывание, так как ссылка на MessageBox разрешается
компоновщиком на этапе сборки программы.
А вот пример позднего связывания:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <Windows.h>
 
int main()
{
    typedef int (_stdcall *PFN_MSGBOX)(HWND, wchar_t const *, wchar_t const *, UINT);
 
    HANDLE const hUser32Dll = LoadLibraryW(L"user32.dll");
 
    if (NULL == hUser32Dll)
    {
        return EXIT_FAILURE;
    }
 
    PFN_MSGBOX pfnMsgBox = (PFN_MSGBOX)GetProcAddress(hUser32Dll, "MessageBoxW");
 
    if (NULL == pfnMsgBox)
    {
        FreeLibrary(hUser32Dll);
        return EXIT_FAILURE;
    }
 
    pfnMsgBox(NULL, L"Hello, World !", L"Message", MB_OK);
 
    FreeLibrary(hUser32Dll);
    return EXIT_SUCCESS;
}
4
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru