[1148] in java-interest
example of calling native c++
daemon@ATHENA.MIT.EDU (Jeff White)
Fri Aug 25 02:57:53 1995
From: Jeff White <jsw@cs.brown.edu>
Date: Mon, 21 Aug 1995 22:07:39 -0400
To: java-interest@java.sun.com
Reply-To: jsw@cs.brown.edu
Some people have requested help in calling native c++ code. Here are
the neccessary files to do this - Demo.java, Hello.java, and Hello.C,
and a Makefile. The key is putting the c++ declaration inside an
extern "C" statement and linking in the C++ lib file - libC.so.5 on my
machine. Also, don't forget to set LD_LIBRARY_PATH to the directory
of the .so. Let me know if you need anymore help.
jeff
-- Demo.java
package demo;
public
class Demo {
public Demo() {
Hello i;
i = new Hello();
i.printhello();
}
public static void main(String argv[]) {
Demo d = new Demo();
}
}
--
-- Hello.java
package demo;
import java.util.Linker;
public class Hello {
static { Linker.loadLibrary("hello"); }
public Hello(){}
public native void printhello();
}
--
-- Hello.C
extern "C" {
void demo_Hello_printhello(struct Hdemo_Hello *blah);
#include "javaString.h"
#include "demo_Hello.h"
}
#include <iostream.h>
void demo_Hello_printhello(struct Hdemo_Hello *blah) {
cout << "hello c++" << endl;
}
---
-- Makefile
BASEDIR=.
HOTJAVA_HOME=/pro/java/java
INCLUDES=-I$(HOTJAVA_HOME)/include -I$(HOTJAVA_HOME)/include/solaris -I.
CFLAGS=$(INCLUDES)
JAVAC=$(HOTJAVA_HOME)/bin/javac
JAVAH=$(HOTJAVA_HOME)/bin/javah
JAVA=$(HOTJAVA_HOME)/bin/java
LD=/usr/ccs/bin/ld
CC=/opt/SUNWspro3.01/bin/cc
CPP=/opt/SUNWspro3.01/bin/CC
all: libhello.so Demo.class
libhello.so: Hello.o demo_Hello.o
$(LD) -L/opt/SUNWspro/SC3.0.1/lib -lC -G -o $@ Hello.o demo_Hello.o /usr/lib/libC.so.5
Demo.class: Demo.java
$(JAVAC) -d . Demo.java
$(JAVA) demo.Demo
demo/Hello.class: Hello.java
$(JAVAC) -d . Hello.java
demo_Hello.c: demo/Hello.class
$(JAVAH) -stubs demo.Hello
demo_Hello.h: demo/Hello.class
$(JAVAH) demo.Hello
demo_Hello.o: demo_Hello.c demo_Hello.h
$(CC) -c $(CFLAGS) demo_Hello.c
Hello.o: Hello.C demo_Hello.h
$(CPP) -c $(CFLAGS) Hello.C
clean:
rm -f *.o demo/*.class *.so demo_Hello.c demo_Hello.h
----
--------------------------------------------------------------------
| Jeff White jsw@cs.brown.edu http://www.cs.brown.edu/people/jsw/ |
| "So you run and you run to catch up with the sun but it's sinking |
| Racing around to come up behind you again" - pink floyd |
--------------------------------------------------------------------
-
Note to Sun employees: this is an EXTERNAL mailing list!
Info: send 'help' to java-interest-request@java.sun.com