Archive for 3月 25th, 2013
-
Hello, GCJ World!
Posted on 3月 25th, 2013 by cx20
GCJ
GCJ は GNU Compiler for the Java の略で、GCC に含まれるコンパイラの1つである。
Java のライブラリが使用できるほか、CNI(Compiled Native Interface)を用いることで、C++ で作成したライブラリを呼び出すことが可能となっている。ソースコード(Java)
public class Hello { public static native void printf( String format ); public static void main( String[] args ) { printf( "Hello, GCJ World!n" ); } }
クラスファイル作成
C:¥> gcj -C Hello.java
C++ ヘッダファイル作成
C:¥> gcjh Hello.class
ソースコード(C++ ヘッダファイル)
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- #ifndef __Hello__ #define __Hello__ #pragma interface #include <java/lang/Object.h> #include <gcj/array.h> extern "Java" { class Hello; } class Hello : public ::java::lang::Object { public: Hello(); static void printf(::java::lang::String *); static void main(JArray< ::java::lang::String * > *); static ::java::lang::Class class$; }; #endif // __Hello__
ソースコード(C++ 実装ファイル)
#include <stdio.h> #include <java/lang/String.h> #include "Hello.h" void ::Hello::printf(::java::lang::String* format ) { int len = format->length(); for ( int i = 0; i < len; i++ ) { ::printf( "%c", format->charAt(i) ); } }
コンパイル方法
C:¥> gcj -c Hello.cpp C:¥> gcj --main=Hello -o Hello Hello.o Hello.class
実行結果
Hello, GCJ World!