我应该在dllimport中使用Ansi或Unicode字符集吗?

Men*_*elt 4 .net unicode pinvoke

使用DllImport导入函数时,可以指定要使用的CharSet.我注意到在C#,C++和visual basic中,.Net运行时默认使用Ansi而不是Unicode.因此,对于具有A和W版本的任何系统调用,默认情况下将调用A版本..Net在内部使用unicode,如果我没有弄错,新版本的windows也会将所有内容转换为unicode,因此这意味着需要额外的编组开销.

我已经养成了总是在这里指定unicode的习惯这是正确的做事方式还是会导致问题?

Ces*_*arB 6

如果使用ANSI变体,如果(例如)存在名称无法在正在使用的ANSI代码页中表示的文件,则会出现问题.使用Unicode的唯一缺点是你的代码在旧的Win9x版本的Windows(95,98和ME)上可能无法正常工作.

有一些函数需要使用ANSI,因为它们实际上使用ASCII(例如GetProcAddress).