Связывание с 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++