How2JNA
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[How2Computing]]
-関連トピックス
--[[Mac OS X の Xcodeでライブラリを作る:http://is.ocha.ac...
--[[Windwos Visual Studio 2010 のC++で動的ライブラリ dll ...
--[[Windwos Visual Studio 2010 で静的ライブラリ lib を作...
//--[[ccで作ったライブラリ(dylib)をJava (JNA) から使う(Ma...
*ccで作ったライブラリ(dylib)をJava (JNA) から使う(Mac OS ...
**まずはCの標準ライブラリを使ってみる [#db29f231]
http://www.hakkaku.net/hakkaker_blog/20090211-378
などに説明あり。これらによると、Mac OS Xならば、
https://github.com/twall/jna
からjna.jarをダウンロードして、
/System/Library/Java/Extensions/
に入れて、以下のプログラムをjavacでコンパイルしてjavaで動...
C言語の標準ライブラリからprintfが呼び出せる。
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class HelloJNA {
//標準Cライブラリのインターフェース
public interface CLibrary extends Library {
// インスタンス定数
CLibrary INSTANCE = (CLibrary) Native.loadLibrary...
//printfの定義
void printf(String format, Object... args);
}
public static void main(String[] args) {
CLibrary c = CLibrary.INSTANCE;
c.printf("Hello JNA!!\n");
}
}
これはどうやら
/usr/lib/libc.dylib
を呼び出しているのかと思われる。
(ソースコードの中ではcとしか書いていないけど、参照するの...
**Mac OS Xのccで作ったダイナミックライブラリをJavaから使...
libmydylib.cというファイルに以下のソースを書く。
(生成する.dylibの名前がlibで始まる必要があるらしいのでソ...
int myadd(int a, int b) {
return a+b;
}
これをコンパイルしてdylibを作る。
cc -dynamiclib -o libmydylib.dylib libmydylib.c
次に、Javaからこのライブラリで作った関数を呼び出すプログ...
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class TestMylib {
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary) Native.loadLibrary...
int myadd(int a, int b);
}
public static void main(String[] args) {
CLibrary mylib = CLibrary.INSTANCE;
System.out.println(mylib.myadd(20,22));
}
}
コンパイルして実行。
$ javac TestMylib.java
$ java TestMylib
42
人生、宇宙、すべての答えは42
終了行:
[[How2Computing]]
-関連トピックス
--[[Mac OS X の Xcodeでライブラリを作る:http://is.ocha.ac...
--[[Windwos Visual Studio 2010 のC++で動的ライブラリ dll ...
--[[Windwos Visual Studio 2010 で静的ライブラリ lib を作...
//--[[ccで作ったライブラリ(dylib)をJava (JNA) から使う(Ma...
*ccで作ったライブラリ(dylib)をJava (JNA) から使う(Mac OS ...
**まずはCの標準ライブラリを使ってみる [#db29f231]
http://www.hakkaku.net/hakkaker_blog/20090211-378
などに説明あり。これらによると、Mac OS Xならば、
https://github.com/twall/jna
からjna.jarをダウンロードして、
/System/Library/Java/Extensions/
に入れて、以下のプログラムをjavacでコンパイルしてjavaで動...
C言語の標準ライブラリからprintfが呼び出せる。
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class HelloJNA {
//標準Cライブラリのインターフェース
public interface CLibrary extends Library {
// インスタンス定数
CLibrary INSTANCE = (CLibrary) Native.loadLibrary...
//printfの定義
void printf(String format, Object... args);
}
public static void main(String[] args) {
CLibrary c = CLibrary.INSTANCE;
c.printf("Hello JNA!!\n");
}
}
これはどうやら
/usr/lib/libc.dylib
を呼び出しているのかと思われる。
(ソースコードの中ではcとしか書いていないけど、参照するの...
**Mac OS Xのccで作ったダイナミックライブラリをJavaから使...
libmydylib.cというファイルに以下のソースを書く。
(生成する.dylibの名前がlibで始まる必要があるらしいのでソ...
int myadd(int a, int b) {
return a+b;
}
これをコンパイルしてdylibを作る。
cc -dynamiclib -o libmydylib.dylib libmydylib.c
次に、Javaからこのライブラリで作った関数を呼び出すプログ...
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class TestMylib {
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary) Native.loadLibrary...
int myadd(int a, int b);
}
public static void main(String[] args) {
CLibrary mylib = CLibrary.INSTANCE;
System.out.println(mylib.myadd(20,22));
}
}
コンパイルして実行。
$ javac TestMylib.java
$ java TestMylib
42
人生、宇宙、すべての答えは42
ページ名: