Тип ссылки здесь не должен влиять.Он просто определяет, когда загружается DLL и требуется ли она для запуска вашей программы.Например, при загрузке во время выполнения вы можете загружать библиотеки DLL, которых нет во время компиляции (например, плагины), и вы можете обрабатывать недостающие зависимости самостоятельно.При связывании во время компиляции вы просто получите сообщение об ошибке Windows, сообщающее, что отсутствует DLL.
Что касается выгрузки, у вас нет прямого контроля, если ваша DLL будет оставаться в памяти, поэтому возможно, что она выгруженамежду двумя разными программами.Кроме того, что вы на самом деле считаете "последовательные звонки"?Два звонка из одной программы?Два вызова из одной и той же программы происходят во время двух разных исполнений?Две программы работают одновременно?В зависимости от сценария вам может потребоваться некоторая общая память (или дисковое пространство) для фактической передачи данных.
Вы можете взглянуть на DllCanUnloadNow , чтобы сообщить Windows, готовы ли вы уже выгрузить, но в зависимости от вашего варианта использования это может быть не тот инструмент.