1.设置 CharSet = CharSet.Unicode

 [DllImport("test.dll", EntryPoint = "sum()", CharSet = CharSet.Unicode)]

public static extern int sum(wchar_t* param);

1>test.dll是载入的dll

2>sum()是dll中的函数

3>param是函数中的参数。

2.把wchar_t* 转为stringbuilder/string

 [DllImport("test.dll", EntryPoint = "sum()", CharSet = CharSet.Unicode)]

public static extern int sum(StringBuilder param);

调用时候:

sum("hello world !")

总结:设置charset 就可以用stringbuilder代替wchar_t*

 看到的另一种方法:

[DllImport("Netapi32.dll", EntryPoint = "NetUserChangePassword", CharSet = CharSet.Unicode)]
public static extern int NetUserChangePassword(
[MarshalAs(UnmanagedType.LPWStr)] string domainname,
[MarshalAs(UnmanagedType.LPWStr)] string username,
[MarshalAs(UnmanagedType.LPWStr)] string oldpassword,
[MarshalAs(UnmanagedType.LPWStr)] string newpassword);

相关文章:

  • 2021-09-18
  • 2021-10-08
  • 2022-01-06
  • 2022-02-01
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-07-08
  • 2022-12-23
  • 2022-01-24
  • 2022-03-04
相关资源
相似解决方案