Как и во многих других местах, мое рабочее место содержит устаревший код и более современные приложения. Например, у нас есть серверное приложение, которое все еще использует компилятор 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 #?