File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Other JSE/JEE APIs and the fly likes using JNI without knowing c/c++ Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Other JSE/JEE APIs
Bookmark "using JNI without knowing c/c++" Watch "using JNI without knowing c/c++" New topic

using JNI without knowing c/c++

jamil lusa
Ranch Hand

Joined: Aug 18, 2011
Posts: 59
hi dear all,

i am learning JNI and i am quite confused in using the external dll in java.

i saw some tutorial require me to generate the .h file which seen like inreasonable because i don't know anything related to c++ or c. i just want to use the function in dll file.

is it possible for me to use dll file without having the knowledge in c++ and c? or at least i want to call some win32 api which is in dll form.
jamil lusa
Ranch Hand

Joined: Aug 18, 2011
Posts: 59
some tutorial even require me to write the implementation in c/c++ language.

any guide is appreciated.
Mohamed Sanaulla
Saloon Keeper

Joined: Sep 08, 2007
Posts: 3152

To create a DLL you need to write some code and that would be the C/C++ code and then compile this to create a dll. I had long back written a small blog post on this, may be it will be helpful. So you need to know C and may not be in depth, but again that depends on what your function would do.

Mohamed Sanaulla | My Blog
Paul Clapham

Joined: Oct 14, 2005
Posts: 19973

To use JNI, you have to have (on Windows, anyway) a DLL which is written in a specific way. You will have read about that in the tutorials you studied. Unfortunately the DLLs for the Windows APIs were not written in that way. That means that if you want to access them via JNI, then you have to write a wrapper DLL which is written in the JNI-specific way. This DLL would do nothing but delegate its calls to the underlying Windows API DLL.

Of course if you don't know C or C++ then even this small task is impossible. In that case you might want to look into Java Native Access.
I agree. Here's the link:
subject: using JNI without knowing c/c++
It's not a secret anymore!