本帖最后由 fyswords 于 2011-08-23 11:53:15 编辑

解决方案 »

  1.   

    就是string
    指定unicode编码就可以了
      

  2.   

    抱歉我没怎么接触过
    能再具体点吗?是项目指定unicode还是string指定unicode?
      

  3.   

    卸载你的方法声明那里
    DllImport("CPPLibrary", EntryPoint = "PrintStringW", CharSet = CharSet.Unicode)]
    大概就是这样的
      

  4.   

    然后直接调用你声明的那个函数.
    去看一下p/invoke的文档吧
      

  5.   

    我舉個 api 讓你參考。
    [DllImport("Netapi32.dll")]
    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);
      

  6.   

    我已经用DllImport定义外部函数了,并且可以调用,只是结果不正确,考虑可能是参数的问题还是想问下
    DllImport("CPPLibrary", EntryPoint = "PrintStringW", CharSet = CharSet.Unicode)]
    这句的具体用法。放在外部函数定义之上?谢谢
      

  7.   


    [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);
      

  8.   

    剛貼錯了,重貼。[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);