Хорошо, это действительно будет весело.
Основная вещь здесь заключается в том, что для загрузки DLL из других путей вы должны либо указать полный путь (при использовании LoadLibrary), либо развернуть переменную среды PATH, чтобы включить другие папки, содержащие ваши DLL. См. Setenv для получения подробной информации о том, как это сделать.
Простое решение - предоставить относительный путь к LoadLibrary. Но, похоже, вы связываете библиотеки DLL, и поэтому вы не можете применить это решение.
Проблема не в том, что в компоновке вашего проекта компоновщик времени выполнения будет использовать текущий рабочий каталог и переменную PATH. Поскольку вы, похоже, связываете библиотеку, нет никаких шансов, что вы можете «исправить» переменную PATH сразу после загрузки первой DLL и перед второй DLL. Остальное решение - переименовать общую DLL в нечто вроде common-1.dll и common-2.dll. Это также дает то преимущество, что вы можете поместить их все в один каталог.
(Если вы используете LoadLibrary в любом случае, просто исправьте переменную PATH ...)