Во-первых, необходимо уточнить модель проекта. «Статическая библиотека» обычно не связана ни с одной из внешних библиотек. Статическая библиотека - это всего лишь архив объектных модулей, если мы говорим о Windows .lib-файлах, конечно.
Вы используете компоновщик только при выполнении исполняемого файла (.exe-файл) или динамической библиотеки (DLL).
Я могу предположить, что ваше решение имеет два проекта: один для статической библиотеки и проект по умолчанию для приложения. В этом случае ссылка на динамическую библиотеку IPP определенно сводит к минимуму область приложения, поскольку приложение не содержит кода функции IPP (только вызовы внешней функции из динамической библиотеки). Функции хранятся в файлах динамической библиотеки, есть сотни МБ.
Если вы хотите создать приложение со статическими IPP-библиотеками и одновременно уменьшить размер исполняемого файла, вам необходимо ограничить оптимизацию ЦП, включенную в ваше приложение одновременно.
Когда вы ничего не делаете, просто используйте статические библиотеки IPP в командной строке для компоновщика, файл объекта приложения связан со всеми вариантами функций, оптимизированными для разных архитектур процессора (от SSE до AVX2).
Например, если вы включили функцию «ippSomeFunction» в свой исходный код, компоновщик добавит «ippSomeFunction_SSE» + «ippSomeFunction_SSE2» + ... + «ippSomeFunction_AVX2» к исполняемому файлу приложения. Это увеличит размер приложения, но позволит выполнить ваше приложение на любом из процессоров Intel с большей оптимизацией для текущего процессора. Диспетчер включит наиболее подходящие варианты функций для CPU.
Если вы знаете целевую архитектуру ЦП, вы можете сделать компоновщик, чтобы добавить только необходимую оптимизацию функций. Прочитайте «readme.htm« doc в каталоге установки IPP »/ipp/tools/ia32 (или, intel64)/staticlib".
В этом случае единственное изменение, которое вы должны сделать для исходного кода, чтобы добавить «#include ipp_ cpuletter .h» файл перед включением других IPP связанных .h файлов, например,
#include "ipp_p8.h"
// From now on only IPP functions for SSE4.2 CPU will be used
#include "ippi.h"
// The rest of code