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" );
}
} |
public class Hello {
public static native void printf( String format );
public static void main( String[] args ) {
printf( "Hello, GCJ World!n" );
}
}
クラスファイル作成
C++ ヘッダファイル作成
ソースコード(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__ |
// 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) );
}
} |
#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 |
C:¥> gcj -c Hello.cpp
C:¥> gcj --main=Hello -o Hello Hello.o Hello.class
実行結果
Tags: GCJ
Categories: CNI, GCJ, Java