не могли бы вы уточнить? Под статической библиотекой вы подразумеваете dll, которая должна находиться рядом с exe? или вы ссылаетесь на доступные dll в windows / system32? Кроме того, потребуются ли программы, скомпилированные с использованием этого метода, «Visual C ++ Redistributable»?
Когда исполняемый файл C ++ ссылается на статическую библиотеку, компоновщик включает объектный код библиотеки в тот же файл, что и EXE-файл. В результате получается один файл *.exe
, и библиотеку не нужно отправлять как отдельный *.dll
.
DLL в windows / system32 обычно являются файлами O / S. Они O / S-специфичные. Вы можете / должны / не отправлять / распространять эти файлы (Microsoft делает). Ваш EXE (или, например, библиотека времени выполнения C, с которой вы статически связаны) зависит от (требует) некоторых функций, которые экспортируются из этих DLL. Эти библиотеки O / S имеют тенденцию к обратной совместимости, поэтому, если вы ориентируетесь на API O / S, существующий в XP, ваш код также будет работать в Vista.
Я предполагаю, что под «Visual C ++ Redistributable» вы подразумеваете «библиотеку времени выполнения Visual C», имя файла DLL которой выглядит примерно так: msvcrt80.dll
. Это то, о чем я говорил в моем первом абзаце: если вы выбираете опцию сборки (доступную в разделе project / properties) для статической ссылки на библиотеку времени выполнения C, то требуемый код статически связан с вашим EXE-файлом не требует (не ссылка на время выполнения) этой DLL.