Ik ben aan het experimenteren met de koppeling tussen Java en C++, en dan niet met JNI maar met CNI en GCJ. Ik compile de Java source naar native code met GCJ, en link die dan met gecompilede C++ code.
Nu ben ik al een tijdje aan het spelen ermee, en C++ aanroepen vanuit Java lukt goed (in Java als native declareren, in C++ implementeren). Alleen andersom lukt me niet, ik krijg dan segfaults (Linux).
De eenvoudigste testcode die ik heb geprobeerd:
Dit compilet uitstekend (zolang je maar linkt tegen libgcj), alleen zelfs dit eenvoudige voorbeeld levert me een segfault op. Ik ben helaas een ware noob op het gebied van GDB en consorten, dus daar kom ik niet ver mee.
Grafisch debuggen kan niet omdat die machine geen XFree heeft geinstalleerd.
Doe ik iets fout?
Nu ben ik al een tijdje aan het spelen ermee, en C++ aanroepen vanuit Java lukt goed (in Java als native declareren, in C++ implementeren). Alleen andersom lukt me niet, ik krijg dan segfaults (Linux).
De eenvoudigste testcode die ik heb geprobeerd:
Java:
1
2
3
4
5
6
7
| public class Test { public static void printHello() { System.out.println("Hello World!"); } } |
C++:
De Test.h is gecreeerd met gcjh vanuit de met javac gecompilede Test class file.1
2
3
4
5
6
7
8
| #include <gcj/cni.h> #include "Test.h" int main() { Test::printHello(); return 0; } |
Dit compilet uitstekend (zolang je maar linkt tegen libgcj), alleen zelfs dit eenvoudige voorbeeld levert me een segfault op. Ik ben helaas een ware noob op het gebied van GDB en consorten, dus daar kom ik niet ver mee.
Grafisch debuggen kan niet omdat die machine geen XFree heeft geinstalleerd.
Doe ik iets fout?
More than meets the eye
There is no I in TEAM... but there is ME
system specs