Если вы собираетесь это сделать, вы должны вызвать FreeLibrary()
сразу же после вашего «тестового» вызова на LoadLibrary()
- но, безусловно, прежде чем вызвать автоматическую загрузку, вызвав одну из ее подпрограмм! (Это, конечно, при условии, что вызов был успешным!) Таким образом, должно не быть проблемой с конфликтами загрузки. (Вы также можете выполнить дополнительные тесты, такие как проверка наличия всех необходимых подпрограмм, с вызовами GetProcAddress()
.
После того, как вы убедились, что DLL есть (и, очевидно, загружаемая), вы бызатем продолжите выполнение - DLL будет загружена «автоматически», когда ваш исполняемый файл сначала вызовет одну из своих экспортируемых функций.
Если у вас уже есть DLL, загруженная (вручную), она попытается загрузить себя дважды втот же процесс (я думаю). В какой-то момент это наверняка вызовет проблемы.
PS: Это хороший способ сделать чек, ИМХО !! Пожалуйста, дайте нам знать, как это происходит.
РЕДАКТИРОВАТЬ: После (несколько обширного) обсуждения в комментариях, теперь мне ясно, что нет необходимости звонить FreeLibrary()
- либо когда я предложил, либо, действительно, в концепрограмма (так или иначе она будет выгружена). Но это все же хорошее решение!