Bueno, nunca lo he hecho en Windows, pero lo he hecho en muchos de los entornos compile-link-rtl que sirvieron como progenitores prácticos para ello. Lo que debe hacer primero es crear "destinos" de código auxiliar sin las referencias cruzadas, luego vincular, luego agregar las referencias circulares y luego volver a vincular. A los enlazadores generalmente no les importan las referencias circulares o las siguientes cadenas de referencias, solo les importa poder resolver cada referencia por sí misma.
Entonces, si tiene dos bibliotecas, A y B que necesitan hacer referencia entre sí, intente algo como esto:
- Enlace A sin referencias a B.
- Enlace B con referencias a A.
- Enlace A, agregando las referencias a B.
Dykam tiene un buen punto, se compila, no se vincula en .Net, pero el principio sigue siendo el mismo: haga sus fuentes con referencias cruzadas, con sus puntos de entrada exportados, pero con todas menos una que tengan sus propias referencias a las demás. fuera. Constrúyalos así. Luego, elimine las referencias externas y vuelva a generarlas. Esto debería funcionar incluso sin herramientas especiales, de hecho, este enfoque ha funcionado en todos los sistemas operativos en los que lo he probado (alrededor de 6 de ellos). Aunque obviamente algo que lo automatice sería de gran ayuda.