MFCで作ったDLLをC#で使用する(補足)

過去に作ったDLLが、C#でエラーが発生して使用できないとお悩みの(筆者と同じ)貴兄に、もしDLLの宣言が


int WINAPI DLL_Foo(...)
となっている場合には、C#でimportする際に

[DllImport("(DLLファイル名).dll", CallingConvention = CallingConvention.Winapi)]
unsafe static extern void DLL_Foo(int DllIntVar1, int DllIntVar2, byte* pDllByteArray);
とすればよい、つhttp://msdn.microsoft.com/ja-jp/library/system.runtime.interopservices.callingconvention%28v=vs.110%29.aspx
"Cdecl: 呼び出し元がスタックを消去します。 これを使用すると、varargs で関数を呼び出すことができます。Printf など、受け取るパラメーターの数が可変のメソッドで使用します。"
"StdCall: 呼び出し先がスタックを消去します。 これは、プラットフォーム呼び出しでアンマネージ関数を呼び出すための既定の規約です。"
"Winapi: このメンバーは実際には呼び出し規約ではありません。代わりに、既定のプラットフォーム呼び出し規約を使用します。 たとえば、Windows では StdCall、Windows CE .NET では Cdecl が既定値になります。"

Windows8 / 8.1の日本語化

ここのアクセスログを見ていると、どうやらDell Venue 8 Proに興味がある方が来てくださっているようだ。
筆者も新しくやっていることを見て頂くのは、例えこのブログが筆者の個人備忘録のようなものであっても、うれしい。
さてさて、更にアクセスログを見てみると、どうやら日本語化が心配な御仁がいらっしゃるようだ。
Windows8以降は、多言語化が容易になっており、Out Of Boxの状態でも日本語が使用できるようになっているのだ、日本語IMEもちゃんと動作する。
設定のスタートは英語でも、ある所で表示言語として日本語を選択できるようになっており、それ以降は普通に日本語が使える。
問題は、リソースの関係か、全ての表示が日本語にはならないのだ。
これを解決するには、日本語の言語パックを導入すればよい

  • "Control Panel" -> "Language"を開く
  • "日本語"の行の"option"を押す
    • "日本語"の選択肢がない場合にはまだ日本語表示が適用されていないので、上の"Add Language"を選択して、"日本語"を選択した後"Add"を押す
    • もし、"日本語"が一番上の行に表示されていない場合には、"日本語"の行を選択した上で、"Move up"を押して、最上行に表示されるようにする
  • "Language options"で"Download and install language pack"を押す

Windows Update経由で日本語言語パックが導入されるので、しばし待つ。
終わったら、

  • "Control Panel" -> "Region" -> "Administrative"を開き、"Change system locale..."を押す
  • "Japanese"を選択して、"OK"を押す

再起動が促されるので、指示に従えば晴れて日本語化の完了である。
なお、これをやっても全てがキレイに日本語化はされないのが、Windowsクオリティー。