JNIを利用したVC側でのダイアログ表示について – プログラミング – Home

JNIを利用したVC側でのダイアログ表...
 
通知
すべてクリア

JNIを利用したVC側でのダイアログ表示について


とるち
 とるち
(@とるち)
ゲスト
結合: 21年前
投稿: 6
Topic starter  

お世話になります。
JAVAからJNI(Java Native Interface)を利用して、VC++で作成したDLLへアクセスしていま
す。
単純な処理ならば正常に処理を行うことができます。
しかし、VCのダイアログを表示しようとすると、画面が2秒程表示されJAVAアプリが異常終了し
てしまいます。
(表示されている間、マウスカーソルは砂時計表示となります)
VC側のダイアログを表示する為に特殊な処理が必要なのでしょうか?

このような現象についてご存知の方がおられましたらご教授の程よろしくお願い致します。

開発環境:
JAVA:J2SDK 1.4.2_03
Eclipse 2.1.2
VC:Visual C++ 6.0 SP5
OS:Windows2000 Professional SP4


引用解決済
トピックタグ
とるち
 とるち
(@とるち)
ゲスト
結合: 21年前
投稿: 6
Topic starter  

追加で記述させて頂きます。

作成するDLLの種別がMFC共有DLLの場合、正常にダイアログを表示することができました。
ですが、拡張DLLだと同じ現象が発生します。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 24年前
投稿: 1421
 

拡張DLLは呼び出す側もMFCを使っている場合しか使えません。

「拡張 DLL : 概要」
http://www.microsoft.com/japan/msdn/library/ja/vccore/html/_core_extension_dlls.3a_.overview.asp


返信引用
とるち
 とるち
(@とるち)
ゲスト
結合: 21年前
投稿: 6
Topic starter  

dairygoodsさん

ご回答有難う御座います。
確かにJAVAはMFCを利用しているはずもありませんので、拡張DLLは使用できませんね。

調べましたところ、ある本に『Vissual C++で作成したアプリケーションからしか使用できな
い』という記述がありました。
ですがその本にはその記述のみであり、使用できない理由まで書かれておりませんでした。
もし理由をご存知でしたらご教授頂けないでしょうか。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

既にdairygoodsさんが書かれているリンク先に書いてあると思うのですが、
リンク先を読んで見られましたか?


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 24年前
投稿: 1421
 

> もし理由をご存知でしたらご教授頂けないでしょうか。

MSDNの解説では不充分でしょうか?


返信引用
とるち
 とるち
(@とるち)
ゲスト
結合: 21年前
投稿: 6
Topic starter  

お世話になります。

MSDNの解説には使えないという事実のみが書かれている、と読み取りました。
何故使えないのか、という理由を知りたいのです。
もしご存知な方がおられたら...と思い尋ねた次第です。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

多分、読み込み方が足りないと思います。
少なくともなぜそうなるのかがリンク先のページには書いてあります。

それでも足りないのであれば、拡張DLLの解説も読んでみましょう。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

思うに実行ファイル側がMFCのDLLを使用していないと駄目というのは理由になっている
と思いますけれど、これでは理由として不十分なんでしょうか?


返信引用
とるち
 とるち
(@とるち)
ゲスト
結合: 21年前
投稿: 6
Topic starter  

呼出側でMFCを利用していない場合、拡張DLLで使用するCWinApp派生クラスが渡せないから、と
考えてよろしいのでしょうか?

「MFC DLL 内で使用できない MFC クラスまたは関数」
http://www.microsoft.com/japan/msdn/library/default.asp?
url=/japan/msdn/library/ja/vccore/html/_core_initialize_regular_dlls.asp


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 24年前
投稿: 1421
 

> 呼出側でMFCを利用していない場合、拡張DLLで使用するCWinApp派生クラスが渡せない
から、と
> 考えてよろしいのでしょうか?

それは理由の一つであり、全ての理由はMSDNに細々と述べられている通りでしょう。

で、要約しようとするならば、
「拡張DLLは呼び出す側のEXEもMFCを利用していないとダメだから」
としか言いようがないと思うのですが。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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