2013年12月28日土曜日

C#:PInvokeStackImbalance が検出されました

C#のプログラムからC++で書かれたライブラリ(DLL)の関数を使う時に、表題のように、
PInvokeStackImbalance が検出されました
というエラーが出ることがあります。これは、C++とC#間での関数の互換性に問題があるようで、.NETのバージョンが新しくなると出てきます。解決策ですが、エラーがでた関数に対して、
  • [DllImport("xxxxx.dll", CallingConvention = CallingConvention.Cdecl)]
というように、関数の定義をしている箇所に青字の記述を追記してください。これは全ての呼び出し関数に必要というわけではないので、、、


2013年12月16日月曜日

言語処理学会の年次大会PDF

言語処理学会の過去の年次大会PDFが公開されたようです。

学会などはスケジュールが合わなくていけないことがよくあるので、こういうのは嬉しいですね。年次大会レベルで埋もれている研究とかあるので、要チェクです。


2013年12月12日木曜日

XNA Game Studio 4.0をWindows8で使う

新しいマシンにXNA Game Studio をインストールする際に問題が生じたので注意事項を幾つか。
  • Visual Studio 2010に対応(2012以降はダメ、2013/12/12現在)
  • Games for Windows マーケットプレース クライアントをインストールしておく
新しい開発環境が使えないのは辛いですね。早く対応してほしいものです。

2013年12月10日火曜日

Eclipse:Android SDK Managerや Android Virtual Device Managerのメニューない場合の対処法

Android関係のSDKやプラグインを入れたのにも関わらず、メニューにそれ関係の項目が表示されていない場合があります。別にインストールに失敗したわけではありません。表示されていないだけです。
  • Windowメニューの Customize Perspectiveを選択
  • Command Groups AvailavilityからAndoroid関係の項目を選択
とすることで、表示されます。



2013年12月6日金曜日

Android:メインスレッドからはネットワークアクセスできない ~android.os.NetworkOnMainThreadException~

公知のことかもしれませんが、個人的にめちゃめちゃハマってしまったトラブルなので、メモ書きです。
Androidのアプリから、クラウドのデータベースに接続しようとしてエラーが発生。なぜか?SDKの問題?エミュレータの設定か何か????と試行錯誤した結果、
  • Android3.0以降では、メインスレッド(UIスレッド)でネットワーク処理ができない
という仕様が問題だったことが判明。解決方法は、
  • StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());を追記する
  • AsyncTaskにより別スレッドで処理をする
ということらしい。後者のほうがオススメらしいですが、そのやり方は後日。