首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

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

2012-02-29 
调用外部函数 DllImport(sms.dll) SmsGetPhoneNumber我通过调用外部函数DllImport( sms.dll )SmsGetPh

调用外部函数 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卡里一般都不存储电话号码。因此这个函数经常会失败

热点排行