Проблемы при создании проектов на C с помощью JNA

#java #netbeans #cygwin #jna

#java #netbeans #cygwin #jna

Вопрос:

Пытаюсь создать небольшую программу на JNA.

После генерации файла заголовка я теперь пытаюсь собрать и создать DLL-файл. Но возникает эта проблема…

Я использую Netbeans IDE с Cygwin, другие проекты на C / C работают.

gcc: Флаг -mno-cygwin был удален; используйте кросс-компилятор, ориентированный на mingw.

сделайте[2]: покидаем каталог `/cygdrive/c/Users/User/Documents/NetBeansProjects/HelloWorldNative’

сделайте[1]: покидаем каталог `/cygdrive/c/Users/User/Documents/NetBeansProjects/HelloWorldNative’

make[2]: * [build / Debug /Cygwin-Windows/_ext/1653581963/HelloWorldNative.o] Ошибка 1

ошибка make[1]: * [.build-conf] 2

make: * [.build-impl] Ошибка 2

СБОЙ СБОРКИ (значение выхода 2, общее время: 1 сек.)

Мне бы очень хотелось, чтобы Netbeans работал здесь, поскольку я новичок в JNA и хочу иметь возможность быстро вносить изменения и экспериментировать. Поэтому не желательно создавать его с консоли каждые 5 секунд: S

Комментарии:

1. Не тот ответ, который вы хотите, но я создаю свои Java-программы в NetBeans или Eclipse и выполняю кодирование на C с помощью Notepad .

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

Ответ №1:

В последние дни я работал над внедрением решения Java JNA Cygwin. После многих попыток и тупиков я, наконец, нахожу разумное решение. Моими вызовами JNA являются getpwnam, chown и perror, все три реализованы в Cygwin1.dll . Вы можете просмотреть мое полное решение, применимое к моему контексту, наhttp://vouters.dyndns.org/tima/Linux-OpenVMS-Java-Implementing_chown_in_Java.html

Я просто надеюсь, что мой стиль кодирования и документации достаточно понятен для вас.

Ответ №2:

Наверное, я немного заблудился. Весь смысл JNA в том, что он освобождает вас от необходимости писать или компилировать машинный код. Вам необходимо предоставить более подробную информацию о том, что делает ваш машинный код. Вы пытаетесь скомпилировать свою собственную dll, к которой затем планируете получить доступ с помощью JNA? Если это так, у вас, вероятно, неправильно настроен Netbeans для сборки dll. Я предполагаю, что он пытается создать исполняемый файл, но не может найти метод ‘main’.

Ответ №3:

В коде Java / JNA chown, который я предоставляю, вызываемая мной DLL является Cygwin1.dll поставляется библиотека dll от Cygwin, которая содержит три последующих вызова (getpwnam, chown и perror).

Зачем мне нужно Cygwin1.dll ? Потому что это единственная DLL в Windows, содержащая эти точки входа в Unix. Моей целью по-прежнему остается написать как можно больше переносимого кода. MinGW не предлагал эти вызовы, мне пришлось отказаться от этого.

Microsoft, несомненно, может предложить что-то аналогичное этим вызовам Unix. Однако это, несомненно, заставило бы меня собрать специфичный для Windows код. Я действительно не забочусь об этом.

В надежде, что это прояснит