Search code examples
javac++g++gcjcross-language

Invoking C++ code from Java (GCJ)


I'm trying to invoke C++ from Java using GCJ using the CNI, so far I'm able to invoke Java code from C++. How can I invoke C++ from Java using the CNI?


Solution

  • I'll extend somewhat on pcent's answer to read the GCJ/CNI Docs.

    I believe that the key is to understand the whole "CNI C++ class" concept.

    • The creation of a CNI C++ class is explained in that page.
    • You can call Java code from a CNI C++ class (provided you have generated header files) - that's what you already do (calling Java from C++).
    • The key point is that CNI C++ methods can be invoked from Java (because these classes have a set of restrictions upon them to make them Java-compatible). And because the CNI class is only a (particular kind of) C++ class, you can also link it to other libraries just as you would link any C++ class.

    Most of the documentation describes how the Java conventions translate in a CNI C++ class.