Создайте DLL для JNI с помощью Eclipse

Я хочу создать JNI DLL с помощью Eclipse и Cygwin. Я знаю, что существует множество примеров, но ни один из них мне не подходит. Я потратил на это 2 дня, но все еще не могу заставить Eclipse правильно построить чертову dll.

Я могу собрать эту DLL Windows в Visual Studio с кодом JNI в порядке. Но моя основная IDE - Eclipse, и мне нужен код в одном месте, в одном проекте. Когда я скомпилирую это в Eclipse, я получу из него dll, но виртуальная машина Java вылетает при загрузке библиотеки без каких-либо ошибок, сообщающих мне, что не так. Итак, я думаю, что это то, как я связал это ... Вот как 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

/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?


person JPM    schedule 15.12.2011    source источник
comment
У вас все еще есть эта проблема? Я также не мог заставить работать эту инструментальную цепочку. Я переключился на Eclipse Indigo и набор инструментов Microsoft Visual C ++, и все в порядке.   -  person Java42    schedule 23.03.2012
comment
Да, я сдался и остановился на Visual Studio, чтобы скомпилировать свою DLL.   -  person JPM    schedule 23.03.2012


Ответы (1)


Вы должны обновить ваше затмение до последней версии и получить ADT версии 20. Это удаляет cygwin из сборки и все пользовательские скрипты, которые могут вам понадобиться для компиляции dll Windows.

person I Am Lion Hear Me Whimper    schedule 30.07.2012