dllimportでAnsiまたはUnicode文字セットを使用する必要がありますか?

StackOverflow https://stackoverflow.com/questions/211739

  •  03-07-2019
  •  | 
  •  

質問

DllImportを使用して関数をインポートする場合、使用するCharSetを指定できます。 C#、C ++、およびVisual Basicでは、.NetランタイムはデフォルトでUnicodeの代わりにAnsiを使用することに気付きました。そのため、AバージョンとWバージョンを持つシステムコールでは、デフォルトでAバージョンが呼び出されます。 .Netは内部的にunicodeを使用します。誤解しない限り、Windowsの新しいバージョンもすべてをUnicodeに変換するため、追加のマーシャリングオーバーヘッドが多くなります。

ここで常にユニコードを指定する習慣になりましたが、これが物事を行う正しい方法ですか、これは問題を引き起こしますか?

役に立ちましたか?

解決

ANSIバリアントを使用する場合、(たとえば)使用されているANSIコードページでは表現できない名前のファイルがあると、問題が発生します。 Unicodeを使用する場合の唯一の欠点は、Windowsの古いWin9xバージョン(95、98、およびME)ではコードがうまく機能しない可能性があることです。

実際にはASCII(たとえばGetProcAddress)を使用するため、ANSIを使用する必要がある関数がいくつかあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top