MSVC++ обеспечивает оптимизацию для программистов, которые хотят развернуть только один исполняемый файл. Вы можете построить с помощью/MT, чтобы связать библиотеку времени выполнения C++ и стандартную библиотеку C++ с EXE; или/MD для вызова библиотек времени выполнения C++ (файлы .DLL).Как развернуть только один исполняемый файл
А поскольку для вашего собственного кода или для сторонних библиотек DLL существует возможность создания только одного исполняемого файла?
Предположим, проект PrjA
использует PrjB
; теперь PrjB
генерирует только динамическую библиотеку PrjB.dll
, а не статическую библиотеку PrjB.lib
. Это способ настроить их так, чтобы PrjA
мог генерировать PrjA.exe
, в который встроен PrjB.dll
, так что нужно развернуть только 1 файл?
Примечание: ограничение заключается в том, что предоставляется только PrjB.DLL
, без статической библиотеки prjB.LIB
. Этот вопрос отличается от C++ How to compile dll in a .exe.
MSVC /MD, /MT config using C++ Runtime Library:
/MD Вызывает приложение для использования многопоточной специфической и DLL конкретной версии библиотеки времени выполнения.
/MT Заставляет приложение использовать многопоточную статическую версию библиотеки времени выполнения.
* Это способ настроить их для достижения аналогичного эффекта как/MD,/MDd,/MT,/MTd? * Пожалуйста, уточните. Мне непонятно, что вы не поняли после прочтения документации для этих флагов. –
Похоже, вопрос заключается в «как статически связывать все мои проекты с одним исполняемым». Не знаю, какие настройки библиотеки времени выполнения имеют к этому отношение, но для связывания ваших проектов статически вам нужно изменить тип своих проектов из «динамической библиотеки» в «статическую библиотеку». –
Ну, тогда ProjB сгенерирует .lib./MD// MT не делают файлы .dll в .exe, они просто выбирают между двумя версиями одной и той же библиотеки - один скомпилирован как .dll и один скомпилирован как .lib. Если вы действительно не можете сделать .lib, и вам действительно нужен одиночный .exe, тогда есть некоторые инструменты, которые могут «связывать» приложение с одним exe post factum - см. Другие вопросы для получения дополнительной информации. –