Как распределить Mac OS X с зависимыми библиотеками?

Во-первых Sun имеет нулевой стимул реализовать компилятор C# на JVM, потому что у них есть что-то очень похожее, названное языком программирования Java.

также не действительно столь же простой так просто реализация компилятора, как библиотеки стандартного класса Java не являются тем же как .net Base Class Libraries. Вы закончили бы тем, что имели необходимость изменить все вызовы API.NET вызовов API Java.

Micrsoft имел продукт по имени J#, который был предназначен, чтобы быть для Java к преобразованию.NET, но в конце никто не использовал его, поскольку API был ограничен пред Java 2 API, таким образом, это было главным образом бесполезно. Это было бы то же, если бы Sun реализовал части BCL.NET, поскольку только базовые части его стандартизированы и единожды оплачиваемые. Части как ASP.NET и WPF, WCF и т.д. не являются частью стандартов ECMA и таким образом, Sun было бы нужно разрешение Microsofts реализовать их API.

, Если достаточно клиентов хочет, чтобы версия Java принесла выгоду для портирования приложения на Java затем, делают это, Вы просто, привычка когда-либо получает любую справку от Sun через C# к компилятору JVM.

15
задан Community 20 March 2017 в 10:29
поделиться

3 ответа

As you mentioned you're not using Xcode, so it's a bit difficult. Here are options in my order of preference:

  1. Switch to Xcode. Use frameworks. The SDL libraries are available as frameworks already, and I've seen more than a couple commercial games with a libsdl.framework inside the app bundle.

  2. Use frameworks, but keep your Makefiles. Download the framework versions of your SDL libraries (or build them yourself), and link with them with the -framework linker flag. Distribute the frameworks with your app or don't, and tell your users to put them in either ~/Library/Frameworks or in /Library/Frameworks. I wouldn't bother with an installer for this.

  3. Statically link against SDL. In the Makefile, you'll have to list the path of the static libraries rather than use the -l flag, e.g., you run "ld blah blah /opt/local/lib/libsdl.a". There is no way that I know to tell -l to prefer static over shared libraries, and believe me, I've looked.

6
ответ дан 1 December 2019 в 03:24
поделиться

Основной подход к этому - отправлять их в комплекте .app. Затем вы измените местоположение, в котором компоновщик ищет разделяемые библиотеки, чтобы включить это.

Шаги следующие:

  1. Создайте новую фазу сборки копий файлов для вашей цели, которая копирует эти файлы в каталог Frameworks пакета .app .

  2. Измените параметр конфигурации сборки «Пути поиска пути к запуску», включив в него @executable_path /../ Frameworks

Если вы соберете исполняемый файл с этими изменениями, а затем посмотрите, вы обнаружите, что дилибы существуют в Каталог Foo.app/Contents/Framework и запущенный otool -L Foo.app/Contents/MacOS/Foo должен давать и запись с префиксом @rpath для этих dylibs.

From это сообщение Cocoabuilder :

В общем, позволяет встроенным фреймворкам работать как в исполняемом файле, так и в пакете,
плагин или подфреймворк. Единственным недостатком является то, что для @loader_path
требуется версия 10.4 или новее. Если вы используете 10.5 или новее, @rpath будет четным
лучше, чем @loader_path .

13
ответ дан 1 December 2019 в 03:24
поделиться

Статическая компоновка библиотек.

3
ответ дан 1 December 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: