Если я отправлю DLL, использующую библиотеку IPP, должен ли я также отправлять DLL IPP?

Я читал эту интересную статью о Диспетчере IPP. В некоторых местах написано: Отправка относится к процессу обнаружения функций ЦП во время выполнения и последующего выбора набора оптимизированных библиотек Intel IPP, соответствующего вашему ЦП. Например, в каталоге \ia32\ipp файл библиотеки ippip8.dll содержит 32-разрядные оптимизированные библиотеки обработки изображений для процессоров с Intel® SSE4.2; «ippi» относится к библиотеке обработки изображений, «p8» — к 32-разрядной архитектуре SSE4.2.

Означает ли это, что если я выпущу DLL с помощью ipp.h, при отправке клиентам им также потребуется версия DLL библиотеки IPP? Или они автоматически скомпилированы и связаны с .lib в финальной сборке?

Я не вижу этого DLL example в документе.


person markzzz    schedule 23.11.2018    source источник


Ответы (1)


Вам не нужно отправлять их все, есть автоматическая отправка, которая выполняется во время выполнения. Если библиотека «отсутствует», тогда среда выполнения выберет среду выполнения с более низкой совместимостью (поэтому у вас должна быть как минимум среда выполнения SSE2).

person Matthieu Brucher    schedule 23.11.2018
comment
Хм, вообще непонятен процесс. Вот что я думаю понять: допустим, я строю MyPlug.dll, которые используют ippsExp_64f. Когда я запускаю его на разных машинах/процессорах, по умолчанию ippInit автоматически определяет, какой процессор работает, и отправляет его на оптимизированную (перегруженную) функцию ippsExp_64f. Но все эти перегрузки внутри самой программы или диспетчер вызовет IPP DLL? (так что пользователю они тоже нужны вместе с моей программой)? - person markzzz; 23.11.2018
comment
В библиотеках. - person Matthieu Brucher; 23.11.2018
comment
Что вы имеете в виду в библиотеках? И .lib, и .dll являются библиотеками. Но одни будут включены в окончательную (уникальную) dll (.lib), а другие нужно отправлять отдельно. - person markzzz; 23.11.2018
comment
.lib - это определения для .dll (если вы собираетесь связываться с dll). Они не содержат кода. - person Matthieu Brucher; 23.11.2018
comment
Разве .lib не являются коллекциями уже скомпилированных объектных файлов, которые будут связаны? - person markzzz; 23.11.2018
comment
Не всегда, это то же самое расширение для файла определения для dll, которое вы должны использовать. Если вы ссылаетесь на такой .lib, вы получаете ссылку времени выполнения на dll. Для чисто статических библиотек у вас нет дополнительной зависимости от dll. - person Matthieu Brucher; 23.11.2018
comment
Давайте продолжим это обсуждение в чате. - person markzzz; 23.11.2018