現在VisualStudio2015を使用し、WPFアプリケーションを作成しています。
WPFアプリケーションをjni4netを使用し、javaと連動させるためにWPFのdllを作成したいのですが、方法がわかりません。
以下のサイトを参考にしようと思っているのですが、
C#+VisualStudioでの開発知識が初めてで知識が乏しいため、具体的な手順が分かりません。
方法をご存知であれば、ご教示お願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ご回答いただいたojikkoさん、ありがとうございました。
とりあえず以下の方法でdll化とWPFの画面をJavaから呼び出すことを実現できました。
①XAMLを作成する
(例)win.xamlファイルとして保存 <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="テスト" Width="320" Height="240" FontSize="20" > <StackPanel> <TextBlock x:Name="text1" Text="ボタンのクリックイベントサンプル" /> <Button x:Name="button1" Content="クリック" /> <Expander x:Name="expander" Header="Expander"> <Grid Background="#FFE5E5E5"/> </Expander> </StackPanel> </Window>
②ライブラリ(アセンブリ)の参照追加。
「ソリューションエクスプローラ配下の【参照】」→「右クリック」→「参照の追加」→ 「アセンブリ」→「フレームワーク」→以下の3つを追加 ・PresentationCore ・PresentationFramework ・WindowsBase
③クラスライブラリの作成(Javaからの呼び出しされる部分や、画面処理など)。
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using System.ComponentModel; 7using System.IO; 8using System.Threading; 9using System.Windows; 10using System.Xml; 11using System.Windows.Markup; 12 13namespace ClassLibrary1 14{ 15 public class Class1 16 { 17 [STAThread] 18 /** 19 * Javaから呼ばれるメソッド 20 */ 21 public void CallCSharp() 22 { 23 var th = new Thread(new ThreadStart(ShowApp)); 24 // STAThread指定 25 th.SetApartmentState(ApartmentState.STA); 26 th.Start(); 27 } 28 29 /** 30 * メニュー画面表示メソッド 31 */ 32 private void ShowApp() 33 { 34 Logger("ShowApp開始"); 35 Application app = new Application(); 36 Window window = new Window(); 37 38 // xaml読み込み 39 using (FileStream infs = new FileStream("win.xaml", FileMode.Open)) 40 { 41 XmlReader xmlReader = XmlReader.Create(infs); 42 window = (Window)XamlReader.Load(xmlReader); 43 } 44 45 // 画面起動 46 Logger("Run-Start"); 47 app.Run(window); 48 } 49 } 50}
④dllファイルの作成
・「ソリューションエクスプローラ」→「右クリック」→「プロパティ」→「アプリケーション」→「出力の種類」を「クラスライブラリ」に変更 ・さらに64bitアプリケーションの場合、プロパティ内の「ビルド」→「32ビットを優先」のチェックを外す ・「ソリューションエクスプローラ」→「右クリック」→「ビルド」でdllが作成される
上記により、WPFを含んだdllファイルが作成できる。
投稿2016/04/26 06:46
総合スコア71
0
単にDLLを作成したいだけであれば、プロジェクトのプロパティの[アプリケーション]タブのアプリケーションの種類をクラスライブラリに変更すれば、作成できます
ただどっち向きに連動させるかわかりませんが(多分Java→C#でしょうが)、jni4netは万能なものではないと思いますよ
→もしJavaからWPFのUIを使いたいとか考えられているなら
個人的にはPOCO(Plain Old Clr Object)とかPOJO(Plain Old Java Object)をやりとりできるレベルって考えていたんですが
投稿2016/04/21 22:15
総合スコア3939
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/22 07:23
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。