Проблемы построения C проектов с JNA - PullRequest
1 голос
/ 29 апреля 2011

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

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

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

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

make [2]: выход из каталога `/ cygdrive / c / Users / пользователь / Documents / NetBeansProjects / HelloWorldNative '

make [1]: выход из каталога` / cygdrive / c / Users /Пользователь / Документы / NetBeansProjects / HelloWorldNative '

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

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

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

BUILD FAILED (значение выхода 2, общее время: 1 с)

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

Ответы [ 3 ]

1 голос
/ 27 августа 2012

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

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

0 голосов
/ 14 июня 2013

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

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

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

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

0 голосов
/ 29 апреля 2011

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

...