Bem, eu nunca fiz isso no Windows, mas fiz em muitos dos ambientes compile-link-rtl que serviram como progenitores práticos para ele. O que você faz é primeiro fazer stub "alvos" sem as referências cruzadas, em seguida, vincular, adicionar as referências circulares e, em seguida, vincular novamente. Os linkers geralmente não se preocupam com refs circulares ou cadeias de refs seguintes, eles só se preocupam em resolver cada referência por conta própria.
Portanto, se você tiver duas bibliotecas, A e B, que precisam fazer referência uma à outra, tente algo assim:
- Link A sem quaisquer referências a B.
- Link B com referências a A.
- Link A, adicionando os refs a B.
Dykam faz um bom ponto, é compilar, não vincular em .Net, mas o princípio permanece o mesmo: Faça suas fontes com referência cruzada, com seus pontos de entrada exportados, mas com todos, exceto um, tendo suas próprias referências aos outros esboçados Fora. Construa-os assim. Em seguida, remova as referências externas e reconstrua-as. Isso deve funcionar mesmo sem nenhuma ferramenta especial; na verdade, essa abordagem funcionou em todos os sistemas operacionais em que já experimentei (cerca de 6 deles). Embora obviamente algo que o automatize seria uma grande ajuda.