2009-11-20 2 views
11

Хотите создать анимационную dll для Window XP Можно ли создавать анимацию Java2d и экспортировать как DLL?Можно ли использовать Java для создания dll?

+0

Почему downvote? Я думаю, что этот вопрос довольно прост. –

+1

Я бы предположил, и я подчеркиваю, что dv пришло от кого-то, желающего, чтобы вопрос был более конкретным относительно целей более высокого уровня OP. Лично я считаю, что в этом случае комментариев хватило бы, но вкусы различаются. – bmargulies

ответ

12

Да. Вам нужно написать код на C++, чтобы запустить JVM с интерфейсом вызова JNI и вызвать его. Однако вам может быть сложно создать окна таким образом, чтобы легко интегрировать приложение среды Windows для отображения вашей анимации. Это довольно продвинутое использование JNI, и я бы рекомендовал прочитать книгу JNI, прежде чем даже попробовать ее немного.

+1

Хотя технически правильно, на самом деле не очень хорошая идея (мягко говоря) использовать Java для задания, описанного в вопросе выше. –

+0

Правда. Должна быть особая причина. Просто предпочтение от кода в java2d и native не сделало бы этого. – bmargulies

+0

В моем случае я мог бы попробовать это, потому что ничего подобного JavaFX нет. Qt имеет устаревший код, много макросов и так много ненужных вещей, в то время как каждая другая библиотека C++ ui с одинаковыми возможностями - это в основном механизм компоновки HTML, который использует сложный стандарт HTML ... – Johannes

1

Я уверен, что вы можете создать только .jar файлы Java не DLLs

+1

Один из нас отвечает на вопрос, который он хочет спросить, но я понятия не имею, кто из нас :-) – bmargulies

+0

Я уверен, что он вам +1 за ответ :) – James

+0

@bmargulies: +1 для вас тоже: P –

2

Я сомневаюсь, что, если есть какие-то сторонние инструменты. Для вашего случая, когда графика задействована, шансы еще ниже.

0

Я согласен с bmargulies. Вероятно, это возможно для эксперта, но это будет большая DLL, и вы будете смешивать технологии, которые никогда не были созданы для совместной работы. На мой взгляд, не имеет смысла попробовать это.

2

Нет, IIRC вы не можете. DLL связаны непосредственно при загрузке. Java-код нуждается в jvm, поэтому вы можете предоставить только DLL, которая запускает jvm и запускает там код, но не все обязательно вписываются в dll.

Вы не должны этого делать. Похоже, вы пытаетесь использовать неправильный подход к своей проблеме.

1

Есть «мосты», которые позволяют Java и не-Java-код звонить друг другу. В зависимости от того, что вы пытаетесь выполнить, они могут быть полезны, поскольку вы могли бы написать свой Java-код, а затем вызвать его из C++ или C# DLL, в зависимости от того, на каком языке вы создаете свою DLL, что также определит, мост вам нужно. Однако я никогда не видел свободно предоставленного моста. Все, что я нашел при поиске, нужно было купить.

0

Ну ...

  1. GCJ is available for Windows.
  2. GCJ является частью GCC.
  3. GCC can create dlls.

Возможно, это можно объединить для создания библиотек DLL с использованием GCJ.

+0

Но GCJ все еще выпускает файлы классов? И это означает, что им нужен JVM –

+0

согласно http://www.autexier.de/jmau/dev/gcj.html gcj все еще создает файлы классов –

1

Собственно, то, что сказал Квентин, должно работать.
При компиляции java на native с GCJ вы сначала скомпилируете файлы .java в специфические для платформы файлы .o (object). Предположительно, вы должны скомпилировать файлы .o в dll, а не exe. GCJ также включает такие компоненты, как сборщик мусора и базовые библиотеки java. Ни один из них не требует запускать JVM. Сложность в том, что dll будет огромным. Простое приложение «Hello World» при компиляции с GCJ - ~35MB, благодаря всем личным папкам по умолчанию и сборщику мусора. Аналогично, ваш dll будет огромным.

Смежные вопросы