Сборка JShortcut JNI dll - PullRequest
       8

Сборка JShortcut JNI dll

0 голосов
/ 02 марта 2020

Я пытаюсь собрать dll JShortcut для x64 на основе источника, найденного в Github: https://github.com/jimmc/jshortcut/

Я клонировал репозиторий, следуя инструкциям Make. Но у меня проблемы со следующим действием:

Вы можете собрать все, кроме DLL, на любой машине с Java и GNU make. Вы можете собрать DLL отдельно на машине Windows, запустив скрипт compile.bat в каталоге src / jni. Сделайте это только после выполнения команды «сделать все» в следующей последовательности:

Этот файл:

cl "-IC:/Program Files/Java/jdk1.8.0_162/include" "-IC:/Program Files/Java/jdk1.8.0_162/include/win32" -LD jshortcut.cpp -Fejshortcut_amd64.dll Advapi32.lib shell32.lib ole32.lib 

И cl не распознан. Я не знаю что делать Я использую Apache Netbeans 12 с поддержкой cpp. Поэтому я думаю, что я смогу сделать это из Netbeans, но я совсем не знаком с cpp.

[Редактировать]

Я заменил:

  • cl на gcc (после предложения FoggyDay) и
  • всех .lib их .dll аналогами,

I получил:

gcc "-IC:/Program Files/Java/jdk1.8.0_162/include" "-IC:/Program Files/Java/jdk1.8.0_162/include/win32" -LD jshortcut.cpp -Fejshortcut_amd64.dll /cygdrive/c/Windows/System32/Advapi32.dll /cygdrive/c/Windows/System32/shell32.dll /cygdrive/c/Windows/System32/ole32.dll

Компиляция выдает мне следующую ошибку:

gdrive/z/Temp/ccdePcoW.o:jshortcut.cpp:(.xdata$_ZN7JNIEnv_9NewObjectEP7_jclassP10_jmethodIDz+0xc): undefined reference to `__gxx_personality_seh0'
gdrive/z/Temp/ccdePcoW.o:jshortcut.cpp:(.xdata$_ZN7JNIEnv_9NewObjectEP7_jclassP10_jmethodIDz+0xc): relocation truncated to fit: rva32 against undefined symbo
__gxx_personality_seh0'
r/lib/gcc/x86_64-pc-cygwin/4.8.2/../../../../x86_64-pc-cygwin/bin/ld: /cygdrive/z/Temp/ccdePcoW.o: bad reloc address 0x0 in section `.pdata$_ZN7JNIEnv_9NewOb
tEP7_jclassP10_jmethodIDz'
lect2: error: ld returned 1 exit status

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

...