当前位置: 代码迷 >> Windows Mobile >> 调用外部函数 DllImport("sms.dll") SmsGetPhoneNumber解决方案
  详细解决方案

调用外部函数 DllImport("sms.dll") SmsGetPhoneNumber解决方案

热度:113   发布时间:2016-04-25 07:46:54.0
调用外部函数 DllImport("sms.dll") SmsGetPhoneNumber
我通过调用外部函数   DllImport( "sms.dll ")   SmsGetPhoneNumber获取本机号码,
编译没有问题,但是运行时报错如下。
Can 't   find   PInvoke   DLL   'sms.dll '.
提示为
如果类库中的某个方法已被移除或重命名,请重新编译引用该方法的所有程序集。  
此异常通常在试图动态访问未通过其强名称引用的程序集中已删除或重命名的方法时引发。

但是我查msdn   sms.dll   中有SmsGetPhoneNumber函数。

程序如下:
[DllImport( "sms.dll ")]
                private   static   extern   IntPtr   SmsGetPhoneNumber(IntPtr   psmsaAddress);

unsafe   public   static   PhoneAddress   GetPhoneNumber()
                {
                        PhoneAddress   phoneaddr   =   new   PhoneAddress();

                        Byte[]   buffer   =   new   Byte[516];
                        fixed   (byte*   pAddr   =   buffer)
                        {
                                IntPtr   res   =   SmsGetPhoneNumber((IntPtr)pAddr);
                                if   (res   !=   IntPtr.Zero)
                                        throw   new   Exception( "Could   not   get   phone   number   from   SIM ");

                                byte*   pCurrent   =   pAddr;
                                phoneaddr.AddressType   =   (AddressType)Marshal.ReadInt32((IntPtr)pCurrent);
                                pCurrent   +=   Marshal.SizeOf(phoneaddr.AddressType);
                                phoneaddr.Address   =   Marshal.PtrToStringUni((IntPtr)pCurrent);
                        }

                        return   phoneaddr;
                }
请问如何解决。


------解决方案--------------------
看看SmsGetPhoneNumber返回什么结果,现在的SIM卡里一般都不存储电话号码。因此这个函数经常会失败
  相关解决方案