軸足を決めよう
私は誰。あなたは何語を話すの?
C# から C++ を呼び出す場合、
[DllImport("libHoge", CharSet=CharSet.Unicode)]
static extern int PutString(string s);
これで、私 (C++) とあなた (C#) は Unicode つながり
C++ 側からコールバックする場合、C# 側で属性を追加すれば良いらしい、
public delegate int CallBack([MarshalAs(UnmanagedType.LPWStr)] string s);
ここまでいけば (C++) <= unicode => (C#)
Mono 思いにふける
mono や C/C++/C# に関するはなし。
mono シリアライズ
mono 単体では System.Xml 使えばオブジェクトのシリアライズ可能
でも monodevelop 上ではビルドでエラー
もしかしてパッケージングが間違ってるのかな?
でも今日は追う余裕がありません。
monodevelop 使ってみました
http://www.monodevelop.org/
VisualStudio で作ったダイアログと同じようなものはすぐに作ることができました。
操作方法は似た感じ。出来たソースと配置も似ている。
ソースの修正作業中にメソッドの使い方なども表示されて親切。
デザイナ画面でボタンコントロールをダブルクリックすると、
そのイベント処理作成コードを自動生成し、そのソース修正画面に移動するなど、
どこかで見たソフトにそっくり、びっくり、ひっくり返ります;;
C# から C/C++ ライブラリをリンクする場合にエラーが出て困っていたら、
$ MONO_LOG_LEVEL=debug mono hoge.exe
を実行したところ、一発で判明した。
マルチプラットホームに対応した開発環境ができるのであろうか。
Mono 本家は
http://mono-project.com/Main_Page
ソースはリリース版がここ
http://ftp.novell.com/pub/mono/sources-stable/
開発版がこちら
http://mono.ximian.com/monobuild/preview/
のようだけど、...
本家からたどるのに、なんで JavaScript が要るのかな?
追記: openSUSE の SRPM
http://ftp.novell.com/pub/mono/download-stable/openSUSE_11.2/src/