JBuilderのJNI – プログラミング – Home

通知
すべてクリア

JBuilderのJNI


TADA
 TADA
(@TADA)
ゲスト
結合: 24年前
投稿: 28
 

お願い致します。
今JBuilderとVC++.NETでJNIをしております。

DLLを作成してjpxと同じフォルダにDLLとライブラリを入れて実行しました。
すると以下のようなエラーが出てしまいます。

java.lang.UnsatisfiedLinkError: JNITEST

at jnitest5.TEST.JNITEST(Native Method)

at jnitest5.Frame1.jbInit(Frame1.java:38)

at jnitest5.Frame1.<init>(Frame1.java:24)

at jnitest5.Application1.<init>(Application1.java:20)

at jnitest5.Application1.main(Application1.java:50)

また次のダイアログも表示されます。
Java Virtual Machine Launcher
Fatal exception occurred. Program will exit

どなたかご教授願えませんでしょうか?
JBuilderの環境設定に問題があるのでしょうか?

どうも新規プロジェクトからアプリケーションを作成して行うとできないのです。
経験のある方教えてください。
TESTクラスファイルのJNIヘッダを作成して.NETでDLLを
作成しまして作業パスの所にライブラリとDLLをコピーしました。

ソースは下記のとおりです。

/***********Application1ファイル
package jnitest;

import javax.swing.UIManager;
import java.awt.*;

public class Application1 {
boolean packFrame = false;

 //ここでDLLを呼ぶ
static {
System.loadLibrary(Sample);
}

//アプリケーションのビルド
public Application1() {
Frame1 frame = new Frame1();
//validate() はサイズを調整する
//pack() は有効なサイズ情報をレイアウトなどから取得する
if (packFrame) {
frame.pack();
}
else {
frame.validate();
}
//ウィンドウを中央に配置
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
frame.setVisible(true);
}

//Main メソッド
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
new Application1();
}
}

/***********Frame1ファイル
package jnitest;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Frame1 extends JFrame {
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();

//フレームのビルド
public Frame1() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}

//コンポーネントの初期化
private void jbInit() throws Exception {
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(400, 300));
this.setTitle(フレーム タイトル);

//Frame1のところでnative関数を呼んでいる
TEST TT = new TEST();
TT.JNITEST();
}

//ウィンドウが閉じられたときに終了するようにオーバーライド
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
}

/***********TESTファイル
package jnitest;
class TEST {
static {
System.loadLibrary(Sample);
}

public native static void JNITEST();

public TEST() {
}
public static void main(String[] args) {
TEST TEST1 = new TEST();
}
}


引用解決済
トピックタグ

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました