Да, это будет работать.DLL B может безопасно вызывать LoadLibrary для DLL A, чтобы получить дескриптор экземпляра для вызова GetProcAddress нужной ей функции.Загрузчик модулей выяснит, что DLL A уже находится в памяти процесса, и просто вернет дескриптор экземпляра для нее в DLL B.
Примечание : хотя есть определенные предостережения с версионированием,когда основная программа зависит и загружает одну версию DLL A, а DLL B нужна другая версия.В этом случае DLL B должна вызывать LoadLibrary с явным путем к нужной ей версии DLL A, а DLL A должна поддерживать SxS для поддержки загрузки двух ее версий в память процесса.
Самый простой способ избежать этого, если вы контролируете как процесс, так и DLL B, чтобы всегда обеспечивать / использовать одну и ту же версию DLL A.