Как и во многих других местах, на моем рабочем месте наряду с более современными приложениями используется устаревший код. Например, у нас есть серверное приложение, которое по-прежнему использует компилятор Microsoft Fortran77. Менее старые части приложения написаны для компилятора Visual Studio 6 C, и в последнее время появились сообщения о написании некоторых новых библиотек с VS .Net 2008 C++. Программы/библиотеки имеют ряд различных механизмов для использования/общения друг с другом, включая статическую компоновку, общую память (сопоставленные файлы памяти Windows), каналы имен и сокеты TCP.
Что мешает приложению C# использовать любую старую библиотеку, например, одну из библиотек Fortran77, написанную на процедурном языке?
Если бы мое приложение на C# понимало формат файла библиотеки Fortan77 или C и могло найти нужный вызов процедуры, могло бы оно маршалировать управляемые объекты, вызывать процедуру и демаршалировать результат?
Если бы я скопировал файл библиотеки .so из Linux в Windows, и мое приложение C# поняло формат файла, могло ли бы оно вызывать функции из этой библиотеки?
Я думаю, что ответы связаны с различными средами выполнения Fortran, C и т. д., которые необходимы для инициализации каждой библиотеки/программы. Если это так, то на фундаментальном уровне эти среды выполнения в целом похожи на CLR (понимая, что они имеют разные функции, такие как управление памятью и т. д. и т. д. в случае CLR)?
Редактировать:
Если сформулировать мой вопрос иначе. Если бы пришелец пришел и дал мне файл двоичной библиотеки и спецификацию формата файла, мог бы я использовать его из C#?