Связывание с CRT в проекте ATL
Библиотеки времени выполнения C (CRT) предоставляют множество полезных функций, которые могут упростить программирование во время разработки ATL. Все проекты ATL связаны с библиотекой CRT. Преимущества и недостатки метода связывания можно увидеть в разделе "Преимущества и компромиссы" метода, используемого для связывания с CRT.
Эффекты связывания с CRT на изображении программы
Если вы статически связываетесь с CRT, код из CRT помещается в исполняемый образ и не требуется наличие библиотеки DLL CRT в системе для запуска образа. Если вы динамически связываетесь с CRT, ссылки на код в библиотеке DLL CRT помещаются в образ, но не сам код. Чтобы образ выполнялся в данной системе, библиотека DLL CRT должна присутствовать в этой системе. Даже если вы динамически связываетесь с CRT, можно обнаружить, что некоторый код может быть статически связан (например, DllMainCRTStartup
).
При связывании образа вы явно или неявно указываете точку входа, в которую операционная система будет вызываться после загрузки образа. Для библиотеки DLL используется DllMainCRTStartup
точка входа по умолчанию. Для EXE это .WinMainCRTStartup
Параметр компоновщика /ENTRY можно переопределить по умолчанию. CRT предоставляет реализацию для DllMainCRTStartup
, WinMainCRTStartup
и wWinMainCRTStartup
(точка входа Юникода для EXE). Эти конструкторы точек входа CRT вызывают конструкторы глобальных объектов и инициализировать другие структуры данных, используемые некоторыми функциями CRT. Этот код запуска добавляет около 25K к изображению, если он связан статически. Если он связан динамически, большая часть кода находится в библиотеке DLL, поэтому размер изображения остается небольшим.
Дополнительные сведения см. в разделе компоновщика /ENTRY (символ точки входа).
Параметры оптимизации
С помощью параметра компоновщика /OPT:NOWIN98 можно уменьшить уровень управления ATL по умолчанию на 10K за счет увеличения времени загрузки в системах Windows 98. Дополнительные сведения о параметрах связывания см. в разделе /OPT (Оптимизация).
См. также
Программирование с использованием ATL и кода среды выполнения C
Библиотеки DLL и поведение библиотеки времени выполнения Visual C++