LWJGL Автоматический родной сборщик

1

В LWJGL (я нахожусь на mac), я делаю программу в нем, но по мере того, как я отлаживаю/запускаю свой код, он требует запуска LWJGL OS X.

То же самое касается Windows, Linux или чего-то еще, но я хочу, чтобы это было немного похоже на игру Minecraft, которая была сделана в LWJGL.

Вы начинаете игру и автоматически выбираете своих операционных систем.

Есть ли способ, которым я могу это сделать, поэтому мне не нужно переключаться вручную в разных операционных системах?

Пожалуйста, поделитесь своим источником, если вы знаете!

  • 0
    Вы можете проверить libgdx, который обрабатывает все это для вас (и позволяет компилировать для Android, iOS и веб-страниц для загрузки).
  • 0
    Спасибо плохо, попробуй.
Теги:
macos
lwjgl

2 ответа

5
Лучший ответ

Посмотрите на это: http://wiki.lwjgl.org/wiki/Distributing_Your_LWJGL_Application.html.

В нем говорится, что вы можете установить путь к своим аборигенам, вызвав следующее в начале вашего основного метода:

System.setProperty("org.lwjgl.librarypath", path);

Делая некоторое обнаружение ОС, вы должны иметь возможность загружать нужных туземцев, например:

if (System.getProperty("os.name").contains("Windows")) {
    // Windows
    System.setProperty("org.lwjgl.librarypath", new File("lwjglFolderLocation/native/windows").getAbsolutePath());
} else if (System.getProperty("os.name").contains("Mac")) {
    // Mac OS X
    System.setProperty("org.lwjgl.librarypath", new File("lwjglFolderLocation/native/macosx").getAbsolutePath());
} else if (System.getProperty("os.name").contains("Linux")) {
    // Linux
    System.setProperty("org.lwjgl.librarypath", new File("lwjglFolderLocation/native/linux").getAbsolutePath());
} else if (System.getProperty("os.name").contains("Sun")) {
    // SunOS (Solaris)
    System.setProperty("org.lwjgl.librarypath", new File("lwjglFolderLocation/native/solaris").getAbsolutePath());
} else {
    throw new RuntimeException("Your OS is not supported");
}
  • 0
    Я попробую позже. Благодарю.
  • 0
    Upvote для вас. Очень полезный код
0

Начиная с LWJGL 3 существует SharedLibraryLoader, который обрабатывает для вас правильные туземцы. Он извлекает туземцев из банок в пути к классам, поэтому вы можете, например, объединить всех туземцев в одну банку или иметь отдельную банку для каждого нативного.

Банки должны быть на пути к классам, поэтому, когда вы распространяете свою программу как исполняемую банку, вам необходимо правильно установить атрибут манифеста Class-Path.

По умолчанию загрузчик должен быть активным, но вы можете явно активировать его с помощью

Library.initialize();

Он работает, извлекая уроженцев из банок во временный каталог и загружая их оттуда. Если вы хотите, вы можете изменить имя и путь временного каталога через свойства Configuration SHARED_LIBRARY_EXTRACT_DIRECTORY и SHARED_LIBRARY_EXTRACT_PATH.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню