Что ж, я никогда не делал этого в Windows, но я делал это во многих средах compile-link-rtl, которые послужили его практическими прародителями. Что вы делаете, так это сначала создаете «цели» заглушки без перекрестных ссылок, затем связываете, затем добавляете циклические ссылки, а затем повторно связываете. Компоновщики обычно не заботятся о циклических ссылках или следовании цепочкам ссылок, они заботятся только о том, чтобы иметь возможность разрешить каждую ссылку самостоятельно.
Итак, если у вас есть две библиотеки, A и B, которые должны ссылаться друг на друга, попробуйте что-то вроде этого:
- Ссылка A без ссылок на B.
- Ссылка B с на A.
- Ссылка A, добавление ссылок на B.
Dykam делает хорошее замечание: он компилируется, а не ссылается на .Net, но принцип остается тем же: сделайте ваши источники перекрестными ссылками с их экспортированными точками входа, но со всеми, кроме одного, со своими собственными ссылками на другие заглушки вне. Постройте их вот так. Затем отключите внешние ссылки и перестройте их. Это должно работать даже без каких-либо специальных инструментов. Фактически, этот подход работал во всех операционных системах, в которых я когда-либо пробовал (около 6 из них). Хотя, очевидно, что-то, что автоматизирует, было бы большим подспорьем.