Vinculando com as opções -R e -rpath no Windows

Estou usando o compilador gcc (MinGW) no Windows XP. Criei uma biblioteca .dlllibdir.dll do que tentei criar um programa que está usando essa biblioteca.
Eu não quero colocar esse arquivo .dll na pasta System ou System32 nem definir o caminho para ele na variável PATH, o que eu quero é fornecer essas informações para o próprio programa.
Eu sei que existe um-R e-rpath interruptores disponíveis, então eu ia ligá-lo com um deles.

Primeiro caminho:
gcc -L/ caminho / para / lib-Wl, -rpath,/ caminho / para / libmain.o -ldir -o prog

Than -R:
gcc -L/ caminho / para / lib-Wl, -R,/ caminho / para / libmain.o -ldir -o prog

Isso se liga com êxitoprog mas quando inicio o programa, o Windows imprime uma mensagem que não consegue encontrarlibdir.dll.
Então, minha pergunta é o que deu errado, por que caminho paralibdir.dll não é conhecido em tempo de execução, mesmo quando estou usando opções apropriadas?

Digamos que eu tenho prog1 e prog2, cada um contendo sua própria cópia do libdir.dll e os dois começam a ser executados ao mesmo tempo em que carregam o código na biblioteca. O que acontece na memória, há duas cópias carregadas ou vinculador descobre que há uma cópia e usa isso para ambos os programas?
A segunda pergunta é sobre como as bibliotecas são carregadas (qualquer sistema operacional) .Os vinculadores sempre carregam a biblioteca inteira ou apenas as partes necessárias? Por exemplo, se o programa referenciar a funçãofoo() que está na biblioteca, o vinculador mapeia na memória somente essa função ou a biblioteca inteira primeiro?

questionAnswers(2)

yourAnswerToTheQuestion