Я хочу собрать JNI DLL с использованием Eclipse и Cygwin.Я знаю, что есть много примеров, но ни один из них не работает для меня.Я потратил 2 дня на это, и я до сих пор не могу заставить Eclipse правильно построить чертову DLL.
Я могу собрать эту Windows DLL в Visual Studio с JNI-кодом в порядке.Но моя основная среда разработки - Eclipse, и я хочу, чтобы код был в одном месте, в одном проекте.Когда я скомпилирую это в Eclipse, я получу dll из этого, но Java VM вылетает при загрузке библиотеки, без ошибок, сообщая мне, что не так.Так что я думаю, это то, как я это связал ... Вот как VS2008 выполняет компиляцию и ссылку. Я показываю командную строку для VS:
компиляция и компоновка для dll с использованием visual studio
/Od /I "C:\a_Mine\siglib\include" /I "C:\Program Files (x86)\Java\jdk1.6.0_25\include
\win32" /I "C:\Program Files (x86)\Java\jdk1.6.0_25\include" /I "..\..\include" /D
"_CRT_SECURE_NO_WARNINGS" /D "SIGLIB_DLL_SOURCE=1" /D "_VC80_UPGRADE=0x0600" /D
"_WINDLL" /D "_MBCS" /Gm /EHsc /RTC1 /MTd /Fp".\Debug/dynamic_library.pch"
/Fo".\Debug/" /Fd".\Debug/" /W3 /nologo /c /ZI /TP /errorReport:prompt
Командная строка MS Linker
/OUT:"Debug/siglib.dll" /INCREMENTAL /NOLOGO /LIBPATH:"C:\Program Files (x86)\Java\jdk1.6.0_25\lib"
/DLL /MANIFEST /MANIFESTFILE:".\Debug\siglib.dll.intermediate.manifest"
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:".\Debug/siglib.pdb"
/DYNAMICBASE:NO /IMPLIB:".\Debug/siglib.lib" /MACHINE:X86 /ERRORREPORT:PROMPT
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib
ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
и вот мой компоновщик для проекта Eclipse Java - C / C +.
g++ -L"C:\Program Files (x86)\Java\jdk1.6.0_25\lib" -L"C:\Program Files\Microsoft
SDKs\Windows\v6.0A\Lib\x64" -shared -o "myjni.dll" $(OBJS) $(USER_OBJS) -lkernel32
-luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32
-luuid -lodbc32 -lodbccp32 -ljvm
Так как мне получить это по ссылкеили правильно скомпилировать с помощью Eclipse Cygwin?