[원문]
[환경]
1. JAVA 다운로드 및 설치
2. Borland C++ 컴파일러 다운로드 및 설치
3. JAVA_HOME, 자바 및 C PATH 설정 (ex) PATH=C:\j2sdk1.4.2_08\bin;C:\bcc55\bin
[컴파일]
1. javac
2. javah -jni $(FileNameNoExt)
3. C++ 소스파일 컴파일
bcc32 -c -IC:\bcc55\Include -LC:\bcc55\Lib -IC:\jdk1.5.0_17\include -IC:\jdk1.5.0_17
\include\win32 $(FileNameNoExt)
4. 컴파일된 C++ 오브젝트 화일을 동적라이브러리로 생성
bcc32 -tWD -IC:\bcc55\include -LC:\bcc55\lib -IC:\jdk1.5.0_17\include -IC:\jdk1.5.0_17
\include\win32 $(FileNameNoExt).obj
5. [참고] java.library.path 설정이 필요한 경우 방법
1) LD_LIBRARY_PATH 설정(SHLIB_PATH) : java.library.path는 LD_LIBRARY_PATH를 기본적으로 사용
2) java -D 옵션 활용 : ex) java -Djava.library.path=./ Hello
[EditPlus]
1. 볼랜드 C++ bin 디렉토리를 PATH로 설정 할 것
////////////////////////////////////////////////////////////////////////////////
// FrameTest.java
//
00001 : package hook;
00002 :
00003 : import java.awt.*;
00004 : import java.awt.event.*;
00005 : import javax.swing.*;
00006 :
00007 : public class FrameTest extends JFrame {
00008 : private JPanel mainPanel;
00009 : private JTextArea mainTextArea;
00010 : private HookTest hook;
00011 :
00012 : public static void main(String[] args) {
00013 : SwingUtilities.invokeLater(new Runnable() {
00014 : public void run() {
00015 : new FrameTest().setVisible(true);
00016 : }
00017 : });
00018 : }
00019 :
00020 : FrameTest() {
00021 : super("FrameTest");
00022 : setSize(200, 200);
00023 : setDefaultCloseOperation(EXIT_ON_CLOSE);
00024 : mainPanel = new JPanel();
00025 : mainPanel.setLayout(new BorderLayout());
00026 : mainTextArea = new JTextArea();
00027 : mainPanel.add(mainTextArea, BorderLayout.CENTER);
00028 : getContentPane().add(mainPanel);
00029 : addWindowListener(new WindowAdapter() {
00030 : public void windowClosing(WindowEvent event) {
00031 : hook.unRegisterHook();
00032 : }
00033 : });
00034 : new Thread() {
00035 : public void run() {
00036 : hook = new HookTest();
00037 : hook.registerHook();
00038 : }
00039 : }.start();
00040 : }
00041 : }
////////////////////////////////////////////////////////////////////////////////
// HookTest.java
//
00001 : package hook;
00002 :
00003 : public class HookTest {
00004 : static {
00005 : System.loadLibrary("HookTest");
00006 : }
00007 :
00008 : void processKey(int key, boolean pressed) {
00009 : System.out.println("Java: HookTest.processKey - key = " + key
00010 : + (pressed ? " pressed" : " released"));
00011 : }
'IT_Programming > Java' 카테고리의 다른 글
[펌] Java Native Interface (JNI) - Strings in JNI (0) | 2009.04.13 |
---|---|
[JDBC] Procedure Call 샘플 코드 (0) | 2009.04.13 |
[펌] HTML내 본문 추출 구현.. (0) | 2009.04.12 |
[펌] Java JMF _ USB Cam을 이용한 JPEG 캡쳐 (0) | 2009.04.12 |
[펌] 자바로 바탕화면 캡쳐하기 (0) | 2009.04.12 |