Есть что-то вроде .dll или .so, но кроссплатформенное? - PullRequest
5 голосов
/ 26 января 2010

есть что-то вроде .dll или .so, но кроссплатформенное?

Ответы [ 6 ]

8 голосов
/ 26 января 2010

Файлы Java .class и архивы .jar будут соответствовать этому требованию, также как и сборки .Net, работающие под Mono.

5 голосов
/ 26 января 2010

универсальный исполняемый формат? №

В этом вся причина существования виртуальных машин (java) или IL (.Net) - поэтому один и тот же исходный код может быть скомпилирован в универсальный промежуточный язык, который затем может быть выполнен платформой в байт-коде базовой системы без программиста, который должен знать различия между системами.

На практике виртуальная машина должна быть последовательно реализована на всех платформах.

4 голосов
/ 26 января 2010

не для c / c ++ AFAIK, в java есть файлы .jar, хотя и аналогичные.

2 голосов
/ 26 января 2010

Непонятно, о чем вы спрашиваете, но если вы спрашиваете, «как я могу создавать динамически загружаемые библиотеки C / C ++ межплатформенным способом», тогда ответ будет GNU Libtool . Он поддерживает их создание и использование, а также функции поддержки во время выполнения

1 голос
/ 26 января 2010

Как уже упоминали другие, не совсем. Возможно, LLVM однажды восполнит пробел, позволяя нам смотреть на эквиваленты LLVM, когда мы создаем статические / динамические библиотеки объектов.

Посмотрите на этот ответ , чтобы узнать о некоторых причинах, по которым библиотеки статических объектов обычно не переносимы. Обычно я говорю, потому что иногда - если производители ОС достаточно заботятся - это возможно - например, freebsd выполняет исполняемые файлы linux или WINE реализует большую часть времени выполнения win32.

0 голосов
/ 26 января 2010

Двоичные объектные файлы почти всегда привязаны к конкретной платформе. Как уже говорили другие, форматы объектных файлов, наиболее близкие к независимости от платформы, вполне могут быть сборками .NET / Mono и байт-кодом Java.

Тем не менее, если вы хотите реальную независимость от платформы, вам лучше всего использовать исходный код (если это вариант). Я знаю, что это не то, что вы спрашиваете, но учтите, что в наши дни вы сможете скомпилировать программу C ++ на большинстве машин (например, с помощью коллекции компиляторов GNU), если ваш код C ++ сам по себе не зависит от платформы.

...