Связывание с ключами -R и -rpath в Windows

Я использую компилятор gcc (MinGW) в Windows XP. Я создал библиотеку .dlllibdir.dll чем я пытался построить программу, которая использует эту библиотеку.
Я не хочу помещать этот файл .dll в папку System или System32, ни указывать путь к нему в переменной PATH, я хочу передать эту информацию самой программе.
Я знаю, что есть-R а также-rpath переключатели доступны, поэтому я собирался связать его с одним из них.

Первый путь
gcc -L/ Путь / к / Библиотека-Wl, -rpath,/ Путь / к / Библиотекаmain.o -ldir -o prog

Чем -R:
gcc -L/ Путь / к / Библиотека-Wl, -R,/ Путь / к / Библиотекаmain.o -ldir -o prog

Это ссылки успешно вprog но при запуске программы Windows выводит сообщение, что не может найтиlibdir.dll.
Поэтому мой вопрос: что пошло не так, почему путь кlibdir.dll не известно во время выполнения, даже когда я использую соответствующие ключи?

Допустим, у меня есть prog1 и prog2, каждый из которых содержит свою собственную копию libdir.dll, и оба они начинают выполняться одновременно, загружая код в библиотеку. Что происходит в памяти, если загружаются две копии или компоновщик выясняет, что есть копия и использует это для обеих программ?
Второй вопрос о том, как загружаются библиотеки (любая ОС). Линкеры всегда загружают всю библиотеку или только необходимые части? Например, если функция ссылок на программыfoo() который находится в библиотеке, компоновщик отображает в памяти только эту функцию или всю библиотеку в первую очередь?