Greetings,
I would like to use a C library in Java to code a Mock (located in the platform frontpanel) for a foundation library.
The purpose is to use the same C library in the board and in the Mock during simulation.
Is there a way to do this?
Thanks in advance for your help,
Best regards.
Hi @s.connor
You can use C library in Java by using JNI (Java Native Interface).
You can load your C library from your Java code with the following line:
Runtime.getRuntime().load("clibrarypath/yourlibrary");
To call the C functions you have to declare native methods in your Java code, for example:
public native void yourMethod();
The name of the C function has to respect the pattern Java_classname_yourMethod
with:
-
classname
the name of the class in which the Java native method are declared
-
yourMethod
the name of your native method
So with JNI the code you are calling must be made specifically for your application. You can create a C program that will expose the C library and that will be called by your Java appplication.
In order to generate the headers of your exposing C code you can use the tool javah that is in your JDK, it will generate the headers from your Java code: javah - C Header and Stub File Generator
You can find more information about JNI here: Java Native Interface Specification Contents
Hope this helps,
Alexis
Hi @alexis.pineau ,
Thanks for these information, this was very helpful.
I will come back to you if I have another question related to this topic.
Best regards,
S. Connor