- 1 名前:chinkasu [02/10/05 14:27]
- このすれ立てても一人としてレスはいるとはおもっちゃ
ねーけどさ 2ちゃんのアフォにはこのレス荒らすことぐらいしかできないと 思ってるぜ お前らに期待を裏切るような書き込みをリクエストする
- 237 名前:デフォルトの名無しさん [03/08/17 19:13]
- 俺、cの知識がないからよくわかんないんだよね。
どうやったらいいの? やっぱcの勉強しないと駄目ですか? 駄目ですよね・・・。
- 238 名前:デフォルトの名無しさん [03/08/17 19:16]
- >>237
お前はアセンブリで充分だ。 そんな高級な言語使うな
- 239 名前:デフォルトの名無しさん [03/08/17 23:15]
- JNI本買わないとやっぱ駄目なのかな。
Webで検索したけどほとんど情報無いよ。
- 240 名前:デフォルトの名無しさん mailto:sage [03/08/18 00:29]
- このスレ頭から30過ぎくらいまで読んだんだけどさ。
Java次世代コボル決定! ごめんね10年後のプログラマ達 っていうサブタイトルつけていいですか?
- 241 名前:デフォルトの名無しさん [03/08/18 00:42]
- >>240
さびれたスレに即レスするのもなんだが、アオるにしても、下手な文章だな。 JNIは、jdk1.5を目前としているいまでは、ほとんど使う必要がないだろう。 GUI周りで、どうしても、使いたいネイティブのAPIがあるときだろうが。 SWTに関していうと、あれはかなり微妙だな。サンがクライアントサイドを本気で取り組めば、存在は消えていく。 逆に、アポーだと、IBMに完全にイニシアチブをとられる流れで、クライアントサイドはSWT一色になる可能性も、 すくないが秘めている。
- 242 名前:デフォルトの名無しさん [03/08/18 01:29]
- >>241
Javaアプリから、WinのネイティブAPIを叩かなければならないような 仕組みを作る羽目になったときは、つかうど。 「誰だ、この仕組み考えた奴は!」と設計者を呪いながら(ワラ
- 243 名前:240 mailto:sage [03/08/18 02:11]
- >>241
別に煽っても釣ってもないです。 JNIの存在意義と正しい使い方がわかってないのに JNIとか叫んでる人達(>>1-30くらいで痛いほど見れます)が大杉。 必要性云々ではなくて機種依存性を正しく局所に押さえ込めてますか? もっというとネイティブAPIをちゃんとラップして使ってますか? っていうレベルで。>>1-30を見ると正直怪しい。 SWTとかどうでもいいよ。 コンポーネントとして成立してればその部分を移植できれば他でも動くんだからさ。
- 244 名前:デフォルトの名無しさん mailto:sage [03/08/18 07:49]
- > JNIは、jdk1.5を目前としているいまでは、ほとんど使う必要がないだろう
何か素晴らしい仕組みが1.5には入るの?
- 245 名前:デフォルトの名無しさん mailto:sage [03/08/18 14:07]
- swigならJNIで使うヘッダや関数を定義したファイルを作れば
自動的に定義された関数にアクセスするC言語のJNIソースと Javaソースを自動生成してくれるのに Java使いは誰も知らなさそうなのが残念
- 246 名前:デフォルトの名無しさん [03/08/18 17:09]
- 俺はSWINGというより、レジストリアクセスやウィンドウキャプチャとか
アーカイバDLLで圧縮処理とかそう言うレベルの仕事がしたかったんだけど。 Javaで。 無理かな?
- 247 名前:デフォルトの名無しさん mailto:sage [03/08/18 18:00]
- >>246
swig swig-jp.dyndns.org/exec_html swing java.sun.com/products/jfc/
- 248 名前:デフォルトの名無しさん mailto:sage [03/08/18 20:08]
- Tigar (Java2 SE 1.5) のJava 言語仕様の拡張
www.mtl.t.u-tokyo.ac.jp/~nminoru/java/j2se15.html genericsとautoboxingはうれしいな。for はなんかスクリプトっぽくて気持ち悪い。 aspectjは入らんのな。プロパティの設定は面倒くさいまんまか。
- 249 名前:デフォルトの名無しさん mailto:sage [03/08/18 20:48]
- >>248
隼(1.4)から虎(1.5)へ〜JDK1.5について! pc2.2ch.net/test/read.cgi/tech/1056807119/l50 【猿が】JavaニGenericsハ不要 【ソース汚す】 pc2.2ch.net/test/read.cgi/tech/1055519583/l50 あたりでやってくれ。
- 250 名前:246 [03/08/19 13:07]
- >>247
ちょっと逝ってくる。 ただいま。
- 251 名前:デフォルトの名無しさん mailto:sage [03/08/19 15:23]
- おかえり
- 252 名前:デフォルトの名無しさん [03/08/20 16:16]
- age
- 253 名前:デフォルトの名無しさん mailto:sage [03/09/18 02:15]
- sage
- 254 名前:デフォルトの名無しさん [03/09/25 20:58]
- それでもおまいらはJNIをおいそれと使いますか?
- 255 名前:デフォルトの名無しさん mailto:sage [03/09/25 22:59]
- java から c を呼び出すのでなく
c から java を呼び出すのに最近はまってる。 ライブラリが充実してて非常によい。 普通に c/c++ のライブラリ使えという話もあるが。
- 256 名前:デフォルトの名無しさん [03/09/28 06:32]
- >>255
むしろ普通にJavaを使え。 JNIでスタートアップルーチンだけ用意して。
- 257 名前:デフォルトの名無しさん mailto:sage [03/09/28 08:12]
- >>1
レスを荒らす方法を教えてください。。。
- 258 名前:デフォルトの名無しさん mailto:sage [03/10/01 05:33]
- C言語からJavaを呼び出すのってバージョン依存激しそうに見えるんだけどそうでもない?
- 259 名前:デフォルトの名無しさん mailto:sage [03/10/01 23:33]
- >>258
Java のバージョンとは別に JNI にもバージョンがあって JNI 1.1 と 1.2 ではだいぶ書き方が違うけど Java 1.2 から 1.4 まで全部 JNI 1.2 だったと思うから バージョン依存の問題はあんまりたいしたことない。
- 260 名前:デフォルトの名無しさん [03/10/13 17:03]
- JAVAでCDプレーヤーを作るコツを教えて下さい。難しいでしょうか?
- 261 名前:デフォルトの名無しさん [03/10/14 23:07]
- gcj + swtでwindows用の
アプリケーションを作ろうと思っています。 waveやmidiを鳴らしたいのですが、 gcjでは実装されていません。 jniを用いたクラスライブラリは存在しないでしょうか? よろしくお願いします。
- 262 名前:デフォルトの名無しさん mailto:sage [03/10/15 00:00]
- win32apiのJNI用ラッパか・・・
MSが自社用JavaVM専用に作ろうとしてSunとケンカして以来、 大きなものは誰も作ってないと思う
- 263 名前:261 mailto:sage [03/10/17 21:03]
- >262
レスありがとうございます。 自分の必要な分はwin32APIを 勉強して、なんとかできました。
- 264 名前:デフォルトの名無しさん mailto:sage [03/10/26 21:47]
- swigつかって自分でSDLのラッパー作ってみればどうよ
- 265 名前:デフォルトの名無しさん mailto:sage [03/10/27 23:53]
- javahでヘッダが出来るじゃないですか。んで
java_パッケージ名_クラス名_関数名(ネイティブメソッド) ってなりますけど、既存の関数呼ぶにはやっぱりこの長い名前の関数から 呼ぶしかないですかね。教えてください。
- 266 名前:デフォルトの名無しさん mailto:sage [03/10/28 00:45]
- >>265
swig使ったら自動的に生成してくれますよ
- 267 名前:265 mailto:sage [03/10/28 22:54]
- 自動で生成って。。。
既存の関数名では出来ないですかね? 調べてみます。
- 268 名前:デフォルトの名無しさん mailto:sage [03/10/31 13:49]
- できないからswig使えってことじゃないの?
- 269 名前:デフォルトの名無しさん [03/11/06 14:32]
- JAVAでC呼び出すなら最初からCで記述すればよくないですか?
何かメリットでもあるんでしょうか?
- 270 名前:デフォルトの名無しさん mailto:sage [03/11/06 14:36]
- >>269
最終的に機械語にするんなら、なんで最初から機械語で書かないで C言語を使うのか? ってのと同レベルの疑問だね。
- 271 名前:デフォルトの名無しさん mailto:sage [03/11/06 14:36]
- JavaでCを使うのは既存のC言語ライブラリが長年使われているもので
実績があるもので、それを何とか再利用したいときなどにメリットがある。 けれどもJNIはJavaにとって苦肉の策。 基本はJavaで、というのが美しい。
- 272 名前:デフォルトの名無しさん [03/11/06 15:12]
- >>271
おまえ、プログラマ? デベロッパ用のソフトなんてJNIが絡んでるの多いぞ そういうの作らないとわかんないとは思うけど
- 273 名前:デフォルトの名無しさん mailto:sage [03/11/06 15:31]
- BASICから機械語呼び出すのとおんなじ
あああ懐かしい
- 274 名前:デフォルトの名無しさん [03/11/07 11:34]
- JAVAからCを呼び出してPRINTFを使って文字を出力する単純な処理ができません。
ライブラリを作ってパスを通してもライブラリが見つからないというようなメッセージが出てしまいます。 どのようにすればいいのでしょうか?
- 275 名前:デフォルトの名無しさん mailto:sage [03/11/07 11:38]
- >247
随分難易度の高いことしてんなー わかったら本でも書け
- 276 名前:デフォルトの名無しさん [03/11/07 22:13]
- CにSTRINGの文字列を引数として読み込む時に何で構造体を使わなくてはいけないのですか?
- 277 名前:デフォルトの名無しさん mailto:sage [03/11/07 22:23]
- >>276
STRING って何? STRING は (String(Java) == jstring(JNI)) と同等? jstring だと構造体っても struct _jobject; (もしくは class _jobject{};)だし…
- 278 名前:デフォルトの名無しさん [03/11/08 00:37]
- Cで作成した関数をjavaから呼び出したい場合、
JNIEXPORT〜の形にすると思うんですが、 プロトタイプ宣言の部分はJNIには不要ですよね? 消してしまって問題ないですか?
- 279 名前:デフォルトの名無しさん mailto:sage [03/11/08 01:42]
- >>278
構造体の話は何処行ったんだ? > 消してしまって問題ないですか? それは javah が自動生成したコードを削って良いかって話ですか? javah が生成したファイルの先頭に > /* DO NOT EDIT THIS FILE - it is machine generated */ って書いてあると思うんだが…
- 280 名前:デフォルトの名無しさん mailto:sage [03/11/08 01:44]
- , --- 、_
/ミミミヾヾヽ、_ ∠ヾヾヾヾヾヾjj┴彡ニヽ / , -ー‐'"´´´ ヾ.三ヽ ,' / ヾ三ヽ j | / }ミ i | | / /ミ ! } | r、 l ゙iミ __」 |]ムヽ、_ __∠二、__,ィ|/ ィ } |  ̄`ミl==r'´ / |lぅ lj >>1 諦めろ 「!ヽ、_____j ヽ、_ -' レ'r'/ `! j ヽ j_ノ ', ヽァ_ '┘ ,i ヽ ___'...__ i ハ__ ヽ ゙二二 ` ,' // 八 ヽ /'´ / ヽ |ヽ、__, '´ / / \
- 281 名前:278 [03/11/08 09:23]
- C単体で動くプログラムはできていて、そのプログラム内で使われている関数をJAVAから呼び出したいと思っています。
C単体で実行はしないのでCのソースのプロトタイプ宣言の部分は削っても問題ないですか? という質問です。
- 282 名前:デフォルトの名無しさん mailto:sage [03/11/08 13:58]
- >>281
> C単体で実行はしないのでCのソースのプロトタイプ宣言の部分は削っても問題ないですか? オマエの手元にしかないソースに判断求められてもねぇ… 基本的に削ると何かメリットがあるのか良く考えてみた方が良いような。
- 283 名前:デフォルトの名無しさん mailto:sage [03/11/08 14:49]
- >>281
構造体の話はどこいったんだ?
- 284 名前:デフォルトの名無しさん [03/11/08 18:36]
- Cで適当に作った関数はプロトタイプ宣言をしなくてもJNIで呼び出せたので、別にプロトタイプ宣言なんてしなくてもいいじゃんと思いこんでいるのですが、そんな問題では無いのでしょうか?
- 285 名前:デフォルトの名無しさん mailto:sage [03/11/08 19:42]
- おまいらのやっている事VBと同じやん。
- 286 名前:デフォルトの名無しさん mailto:sage [03/11/08 20:09]
- >>284
構造体の話はどこいったんだ? > Cで適当に作った関数はプロトタイプ宣言をしなくてもJNIで呼び出せたので、別にプロトタイプ宣言なんてしなくてもいいじゃんと思いこんでいるのですが、そんな問題では無いのでしょうか? とりあえず、JNI に関する質問ではないので C の初心者スレにでも言って聞け。
- 287 名前:デフォルトの名無しさん mailto:sage [03/11/08 22:48]
- JNIを扱うには、CとJavaとOSに精通してないと厳しいぞ。
- 288 名前:デフォルトの名無しさん mailto:sage [03/11/08 23:21]
- >>287
おまいの言っている事VBと同じやん。
- 289 名前:デフォルトの名無しさん mailto:sage [03/11/08 23:27]
- >>287
CとJavaとOS について初心者よりマシっつー程度の知識があれば JNI 使えます。
- 290 名前:デフォルトの名無しさん [03/11/09 12:59]
- でもJNIの初心者向けのサイト行っても引数としてオブジェクト使ったり構造体のポインタをオブジェクトに対して使ったり、もう暗号みたいになっててよくわからんですよ。
優しく解説されている本とかあるんでしょうかね?
- 291 名前:デフォルトの名無しさん mailto:sage [03/11/09 13:41]
- >>290
> でもJNIの初心者向けのサイト行っても引数としてオブジェクト使ったり構造体のポインタをオブジェクトに対して使ったり、もう暗号みたいになっててよくわからんですよ。 それは精進が足りん、ってだけの話では? とりあえず、キミが JNI は良くわからない、と思っている事だけはわかった。 何がわからないのかはサッパリわからない。
- 292 名前:デフォルトの名無しさん mailto:sage [03/11/09 17:59]
- JNIとは関係なくプロトタイプ宣言はしておいたほうがいいよ。
コンパイラが型チェックしてくれてコーディングミスを指摘してくれる。
- 293 名前:デフォルトの名無しさん mailto:sage [03/11/09 23:01]
- SwigつかってJavaからSDLを使うラッパー作ったけど公開してほしい人っている?
- 294 名前:デフォルトの名無しさん mailto:sage [03/11/10 10:02]
- >>293
公開したいんだろ? 公開したらいいじゃん。 まったく、いやらしい言い方する奴だな。
- 295 名前:デフォルトの名無しさん mailto:sage [03/11/11 03:45]
- >>294
うぅ・・・気をつけます、どうやら誰も要らないみたいなんでひっそり封印します
- 296 名前:デフォルトの名無しさん [03/11/14 13:59]
- 日本語の文字列の受け渡しがさっぱり分からないのですがサンプルに書いてある通りに書いてみて、
こういうもんだと割り切って詳しく理解する必要はありませんか?
- 297 名前:デフォルトの名無しさん mailto:sage [03/11/14 15:43]
- >>293
誰かが JSDL ってのを公開してたような…
- 298 名前:デフォルトの名無しさん mailto:sage [03/11/14 15:46]
- >>296
> こういうもんだと割り切って詳しく理解する必要はありませんか? その程度の情報で同意を求められても… 文字列は UTF 使うってのを忘れてる、とかじゃなくて?
- 299 名前:デフォルトの名無しさん [03/11/19 14:39]
- Cで作った文字配列をJAVAに返すやり方がいまいちわかりません。
簡単な方法はありませんか?
- 300 名前:デフォルトの名無しさん mailto:sage [03/11/19 15:47]
- >>299
C の char配列を Java の byte配列に変換して渡してやるか、(渡された先で String に変換する) JNI 経由で java.lang.String のコンストラクタ String(byte[] bytes,String encoding) を呼び出せ。
- 301 名前:デフォルトの名無しさん [03/11/19 16:29]
- C側のネイティブ関数の戻り値はJSTRINGじゃないですよね?
UTFって使わなくていいんでしたっけ?
- 302 名前:デフォルトの名無しさん mailto:sage [03/11/19 17:48]
- >>301
それは JNI とは関係ない話だ。自分で調べろ。
- 303 名前:デフォルトの名無しさん mailto:sage [03/11/19 19:56]
- UTF8になってるならサポート関数があったと思う
- 304 名前:デフォルトの名無しさん mailto:sage [03/11/19 20:37]
- >>303
それは >>296 のサンプルに書いてあると思われ。
- 305 名前:デフォルトの名無しさん mailto:sage [03/11/20 14:31]
- すみませんでした。
知ったかぶりしてますた。
- 306 名前:デフォルトの名無しさん [03/11/20 19:19]
- SPRINTFで取得した文字列をNEW OBJECT ARRAYを用いて作った配列に格納したいのですがJAVAプログラムの実行時にエラーが出てしまいます。
何かよい方法はないでしょうか?
- 307 名前:デフォルトの名無しさん mailto:sage [03/11/20 19:25]
- >>306
> SPRINTFで取得した文字列をNEW OBJECT ARRAYを用いて作った配列に格納したいのですが C での文字列と Java での文字列は別物として考えたら? あと、大文字小文字は正確に書け。 > 何かよい方法はないでしょうか? JNI に手を出す前に C か Java をちゃんと勉強する事をお勧めする。
- 308 名前:デフォルトの名無しさん [03/11/20 19:48]
- もちろん別の配列として扱っています。
ようはCの配列の中身をJava側の配列に入れたいのですが、 New jObjectで作った配列には文字変数の指定しかできないため、文字配列を指定して入れる事が難しいのです。 他の方法はありませんか?
- 309 名前:デフォルトの名無しさん mailto:sage [03/11/20 19:52]
- >>308
「New jObject」って何よ。
- 310 名前:デフォルトの名無しさん mailto:sage [03/11/21 00:46]
- >306
ようするにキャラクタ配列をオブジェクト配列に入れたいということ? 型が違うから、char型をCharacterオブジェクト型にしないといけないと思うけど。 JNI使うと、エラー発生時に"このエラーをSUNに報告してくれみたいな"のが出たりして 大変だと思うけど地道に頑張ってください。
- 311 名前:デフォルトの名無しさん mailto:sage [03/11/21 01:46]
- ここもネタ心者が出没するよーになったか。
文字列の受け渡しで二週間もハマる馬鹿が実在するとも思えんしなぁ…
- 312 名前:デフォルトの名無しさん mailto:sage [03/11/21 01:47]
- >>310
>>274
- 313 名前:デフォルトの名無しさん mailto:sage [03/11/21 01:54]
- >>308
構造体はどーなりましたか?
- 314 名前:ネタ心者 [03/11/21 09:25]
- すみませんでした。
知ったかぶりしてますた。
- 315 名前:310 mailto:sage [03/11/21 09:30]
- >311
真面目に困ってるかと思っちまいました。
- 316 名前:デフォルトの名無しさん [03/11/24 13:15]
- JNI_OnUnloadって本当に使える?
デバッグ出力してみたけど、通ってるように見えない。
- 317 名前:デフォルトの名無しさん [03/11/24 18:48]
- int data[512*384];
jintArray jdata = env->NewIntArray(512*384); env->SetIntArrayRegion(jdata,0,512*384,data); によってできた配列jdataのメモリを明示的に開放する必要はありますか?
- 318 名前:デフォルトの名無しさん [03/11/24 19:04]
- >>317につけたし。
最後に return jdata; します。
- 319 名前:デフォルトの名無しさん mailto:sage [03/11/24 19:46]
- 解放ってどうやってやるつもりだ?freeか?
- 320 名前:デフォルトの名無しさん [03/12/20 04:24]
- c++でウィンドウを作り,Javaから呼び出しています。
メインのウィンドウは出ますが、ダイアログが出ません。 同じソースファイルをcから呼ぶとダイアログも表示されます。 だれか教えてください。
- 321 名前:デフォルトの名無しさん mailto:sage [03/12/20 09:42]
- >>320
環境が分からん。Win32か?
- 322 名前:デフォルトの名無しさん [03/12/20 16:14]
- 320です。
すみません。win32です。VC++6でdllをつくりました。 どうやらリソースエディタで作った、メニューやダイアログが うまく読み込めてないみたいです。 どなたかアドバイスお願いします。
- 323 名前:デフォルトの名無しさん mailto:sage [03/12/20 17:08]
- >>322
具体的に、どんな関数をどのような順番で呼んで、どこで失敗したのか特定しろ。
- 324 名前:デフォルトの名無しさん [03/12/20 17:30]
- 320です。
C++ではjavaから呼ばれる関数、 そこから呼ばれるWinMain()に相当する関数、 それとメインウィンドウとダイアログの ウィンドウプロシージャを用意しました。 WinMain()に相当する関数ではメインウィンドウの登録、 メッセージループなど一般的なWin32SDKのWinMain()で やるようなことをしています。 インスタンスハンドルはGetWindowLong()でデスクトップの ハンドルを取っています。 メインウィンドウのウィンドウプロシージャでは、ダイアログを開くための DialogBox()を呼んでいて、ここで失敗し−1が帰ってきます。
- 325 名前:デフォルトの名無しさん [03/12/20 17:32]
- わかりにくかったら申し訳ございませんが、よろしくお願いします。
320でした。
- 326 名前:デフォルトの名無しさん mailto:sage [03/12/20 18:35]
- >>324
そんな説明されてもわからん。 オマエの説明じゃ埒明かんのでソース全部晒せ。
- 327 名前:デフォルトの名無しさん [03/12/20 21:48]
- >> インスタンスハンドルはGetWindowLong()でデスクトップの
>> ハンドルを取っています。 明らかにここだろ、問題は。DllMainのHANDLEを使えばいいのでは?
- 328 名前:デフォルトの名無しさん [03/12/21 04:32]
- 320です。
できました!本当にありがとうございました。327さんのおっしゃる通りでした。 皆様何度もレス頂いて本当にありがとうございます。
- 329 名前:デフォルトの名無しさん [04/01/23 01:14]
- Cコードってデバッグできますか?
jdbでブレイクポイント設定しても止まってくれないです。
- 330 名前:デフォルトの名無しさん mailto:sage [04/01/23 09:15]
- >>329
VC++でしかJNI作ったことないけど、停止できるよ。 ちゃんと実行するプロセスにjava.exe(に相当するもの)を指定してる?
- 331 名前:デフォルトの名無しさん [04/03/14 00:49]
- あんまり人いないね・・・なのであえてage。
最近USBデバイスと通信する必要があったのでJNIを試した。 で、下のようにエラーを通知しようとしたら、日本語文字列が化けますた。 jclass jc = env->FindClass( "java/io/IOException" ); env->ThrowNew( jc, "日本語文字列" ); 下のサイトを参考にUnicodeに変換しても駄目。 www.ki.rim.or.jp/~kuro/Java/JNI/JNI-03.html 仕方ないのでExceptionのサブクラスを作ってエラーメッセージを固定した。 当初の目的は果たせんだけど、すっきりしない。誰か解決法知らない?
- 332 名前:デフォルトの名無しさん mailto:sage [04/03/14 01:01]
- 日本語で困ったことはないな。
お前のコードが腐ってるんだろうよ。さらしてみ。
- 333 名前:331 mailto:sage [04/03/14 01:11]
- 上のサイトの一番下のDLL側コードの
char* src = "こんばんわ"; より下のソースをreturn result; → env->ThrowNew( jc, result);に 変更しただけなんだけど・・・
- 334 名前:デフォルトの名無しさん mailto:sage [04/03/14 01:20]
- そのサイトのコードそのままだと日本語はちゃんとでるの?
- 335 名前:デフォルトの名無しさん mailto:sage [04/03/14 01:52]
- >> env->ThrowNew( jc, result);に
2番目、jstringじゃだめでしょ。 szWideでいけない?
- 336 名前:デフォルトの名無しさん [04/03/14 03:25]
- CのプログラムからHORB(つまりJAVAをつかった関数)をつかって離れた端末の関数をたたくってことはできますか?
- 337 名前:デフォルトの名無しさん mailto:sage [04/03/14 03:31]
- >>336
できるよ。 HORB使うと決まっているのなら、CのプロセスとJavaのプロセスを両方たてて、 socketなんかでプロセス間通信したほうが楽だと思う。
|

|