??xml version="1.0" encoding="utf-8" standalone="yes"?>久久国产精品成人片免费,精品国产乱码久久久久久呢 ,99久久精品午夜一区二区http://www.shnenglu.com/guogangj/创作Q也是一U学习的q程?/description>zh-cnWed, 07 May 2025 17:06:47 GMTWed, 07 May 2025 17:06:47 GMT60用VS2010发布ASP.net|站http://www.shnenglu.com/guogangj/archive/2011/09/13/155703.htmlJiang GuogangJiang GuogangTue, 13 Sep 2011 14:11:00 GMThttp://www.shnenglu.com/guogangj/archive/2011/09/13/155703.htmlhttp://www.shnenglu.com/guogangj/comments/155703.htmlhttp://www.shnenglu.com/guogangj/archive/2011/09/13/155703.html#Feedback1http://www.shnenglu.com/guogangj/comments/commentRss/155703.htmlhttp://www.shnenglu.com/guogangj/services/trackbacks/155703.html注:本文q不是一很全面的介l网站发布的文章Q仅供入门参考?/span>

发布|站有多UŞ式,比较传统的方式是使用FTPQ或者用Windowsq程桌面之类的,各个aspx和dll复制到对应的服务器目录中厅R这样做的缺Ҏ而易见,是不够方便Q另外很隑ց到只上传更新q的文g?br />
强大的Visual Studio提供了直接的|站发布的功能,其实准确说ƈ不是Visual Studio提供的,而是通过了微软提供的一套工PWeb Deployment ToolQ这套工具在你安装Visual Studio的时候也p动安装了Qƈ且跟Visual Studio很好地整合了hQ当Ӟ光是你自己开发用的电脑上装了q是不行的,服务器也得装Q反正我用的Windows Server 2003服务器上默认是没有的。这个工L介绍及下载地址见:

http://technet.microsoft.com/en-us/library/dd569059(WS.10).aspx

然后……

我就h一下,详情直接自己看MSDNQ后面我只针对可能出现的问题讲讲Q?br />
http://msdn.microsoft.com/zh-cn/library/dd465337.aspx

在你“Publish Web”的时候,会出现这个对话框Q注意那?#8220;Site/application”的选项Q?br />


“/lm/w3svc/1/ROOT/app1”Q这是我的写法,啥意思呢Q?#8220;lm”大概是Local machineQ网站发布位|跟前面指定的服务器一_“w3svc”是IIS服务了,“1”是Site IDQ这里的“1”指的应该是默认|站Q?#8220;ROOT”q里指的是默认网站的根目录;最后的“app1”是我徏的虚拟目录了。如果是别的情况Q请上MSDN查查看。这D讲解其实连我自己都不是很确定,q个选项很晦涩,又很关键Q写错了发布不成功?br />
后面的User name/Passworld自然得要有管理员权限了?br />
如果q里你成功了Q你会很快发C个问题,那就是web.configq个文gQ服务器的配|一般跟本地调试的配|是不同的,你发布的时候是直接把本地的q个文g上传到服务器了,肯定是不对的了,怎么改?

其实你如果是用向导创建工E的话,你就会发现web.configq个节点打开的话下面有两个文Ӟ如图Q?br />


如果没有Q你也可以右击web.configQ然后在弹出的菜单中选择“Add Config Transforms”Q?#8220;Web.Debug.Config”是用来在发布Debug版的|站的时候,用来对web.config做一些修改的Q?#8220;Web.Release.Config”是用来在发布Release|站的时候,用来对web.config做一些修改的Q如果你有更多的配置文gQ这U?#8220;Config Transforms”会有更多个?br />
你打开Web.Debug.Config看看Q其实上面都已经有注释教你如何来写这个文件的了,只不q如果你需要更详细的信息的话,׃够,你得参看q个链接Q?br />
http://msdn.microsoft.com/zh-cn/library/dd465326.aspx

要全部学会里面的内容Q一来很难,二来没必要,我们做项目,不是在做U研Q感觉就是掌握原理,然后见招拆招Q有需要再打开参考吧?br />
希望本文能帮上你些忙?br />



Jiang Guogang 2011-09-13 22:11 发表评论
]]>
安装VS2010后VS2008无法调试Windows MobileE序的问?/title><link>http://www.shnenglu.com/guogangj/archive/2011/09/08/155351.html</link><dc:creator>Jiang Guogang</dc:creator><author>Jiang Guogang</author><pubDate>Thu, 08 Sep 2011 06:07:00 GMT</pubDate><guid>http://www.shnenglu.com/guogangj/archive/2011/09/08/155351.html</guid><wfw:comment>http://www.shnenglu.com/guogangj/comments/155351.html</wfw:comment><comments>http://www.shnenglu.com/guogangj/archive/2011/09/08/155351.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/guogangj/comments/commentRss/155351.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/guogangj/services/trackbacks/155351.html</trackback:ping><description><![CDATA[大概大约半年多前遇到q一ơ,当时Windows Phone 7的SDK发布Q好奇,也就下蝲了一个安装了Q感觉在公司的破机器QE2200的CPUQ上跑得很慢Q更郁闷的是׃昑֍不支持DX9QWindows Phone 7模拟器的q行效果惨不忍睹Q而这些其实都没什么,因ؓ装了q个Q导致我的VS2008无法调试Windows Mobile的程序了Q现象如图:<br /><img border="0" alt="" src="http://www.shnenglu.com/images/cppblog_com/guogangj/f5_error.png" width="415" height="249" /><br />按F5QDeploy成功之后q卛_个消息款Q只有一?#8220;定”按钮Q没有Q何别的提C。折腾了半天依旧如此Q网上查资料Q可能是׃q做Windows Mobile开发的人太,没几个h遇到q个问题Q相似的都是说ASP.net在VS2010下无法启动调试,需要修改Web.config配置{?br /><br />不幸中的万幸是我卸蝲掉VS2010之后Q一切都正常了,所以之后也一直没安装VS2010?br /><br />而最q项目需求又要用到VS2010Q我清理了半天已l?#8220;见红”的系l盘之后开始安装VS2010 Ultimate版本Q之前装的是Express版,安装中还不断祷不要出现以前那种问题。结果,q是出现了,N我只能卸载掉VS2010么?毕竟调试Windows MobileE序是必ȝ。心不甘Q毕竟装一ơ卸一ơ花Ҏ间不?br /><br />用google搜烦了半天后Q终于,功夫不负有心人,在Microsoft的官方网站上扑ֈ了解x案:<br /><a >http://social.msdn.microsoft.com/Forums/en/windowsphone7series/thread/7afdadc0-7e16-4018-85a8-a13fe9c4b8cb</a><br />览完整个帖子之后,知道大概~由是这P<br /><br />׃VS2010改变了某些环境变量,DVS2008找不到调试器Q在我的机器上,VS2008的智能设备调试器存放处是Q?br />C:\Program Files\Microsoft Visual Studio 9.0\SmartDevices\Debugger\target\wce400\armv4i\edm2.exe<br />这个文件复制到VS2010的相应目录下OK了:<br />D:\Program Files\Microsoft Visual Studio 10.0\SmartDevices\Debugger\target\wce400\armv4i\edm2.exe<br />也许你已l发玎ͼ׃pȝ盘捉襟见肘的剩余I间Q我把VS2010安装到D盘了Q但在系l盘依旧要占用不空间的。希望老板很快l我换好机器……<br /><img src ="http://www.shnenglu.com/guogangj/aggbug/155351.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/guogangj/" target="_blank">Jiang Guogang</a> 2011-09-08 14:07 <a href="http://www.shnenglu.com/guogangj/archive/2011/09/08/155351.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#实现cMC++功能的困?/title><link>http://www.shnenglu.com/guogangj/archive/2011/08/18/153813.html</link><dc:creator>Jiang Guogang</dc:creator><author>Jiang Guogang</author><pubDate>Thu, 18 Aug 2011 15:07:00 GMT</pubDate><guid>http://www.shnenglu.com/guogangj/archive/2011/08/18/153813.html</guid><wfw:comment>http://www.shnenglu.com/guogangj/comments/153813.html</wfw:comment><comments>http://www.shnenglu.com/guogangj/archive/2011/08/18/153813.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.shnenglu.com/guogangj/comments/commentRss/153813.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/guogangj/services/trackbacks/153813.html</trackback:ping><description><![CDATA[<div>我要实现一个功能,用C++表达如下Q? <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">int</span><span style="color: #000000"> g_iTest </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; </span><span style="color: #008000">//</span><span style="color: #008000"> 全局变量</span><span style="color: #008000"><br /></span><span style="color: #000000"><br /></span><span style="color: #0000ff">class</span><span style="color: #000000"> A<br />{<br />A(</span><span style="color: #0000ff">int</span><span style="color: #000000">*</span><span style="color: #000000"> pVal){m_pVal </span><span style="color: #000000">=</span><span style="color: #000000"> pVal;}   </span><span style="color: #008000">//</span><span style="color: #008000">指针记录下?/span><span style="color: #008000"><br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> Increase(){(</span><span style="color: #000000">*</span><span style="color: #000000">m_pVal)</span><span style="color: #000000">++</span><span style="color: #000000">;}<br />}<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000"><img src="http://www.shnenglu.com/Images/dot.gif" alt="" /></span><span style="color: #008000"><br /></span><span style="color: #000000">A a(</span><span style="color: #000000">&</span><span style="color: #000000">g_iTest);<br />a.Increase(); </span><span style="color: #008000">//</span><span style="color: #008000">会改变g_iTest的?/span></div>换句话说Q我想保存一个int的引用,对这个成员int的操作就是对那个全局int的操作,q样的功能,如何用C#来实玎ͼ<br /><br />׃int是g递,所以没办法保存q个“引用”?br /><br />我开始尝试用unsafe的指针,但当我对System.Drawing.Color取址的时候,居然出现CS0208~译错误。纳闗?br /><br />然后试使用装箱/拆箱的方法来传递一个object来实玎ͼ但A(object val)q样的构造函数确实太不美观,光看q个构造函敎ͼ谁知道A惌的是个整型?<br /><br />最?#8230;…唉,自己弄了个MyInt?br /><br />写MyInt的时候,我第一惛_的就是类似C++的自动类型{换,使得我可以自由无地把整?#8220;赋?#8221;lMyIntQ反之亦Ӟ但我发觉C#的类型{换运符重蝲函数居然必须是static的,完全没用?br /><br />最最?#8230;…先将q吧?/div><img src ="http://www.shnenglu.com/guogangj/aggbug/153813.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/guogangj/" target="_blank">Jiang Guogang</a> 2011-08-18 23:07 <a href="http://www.shnenglu.com/guogangj/archive/2011/08/18/153813.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从C++到C#的一些注意事?/title><link>http://www.shnenglu.com/guogangj/archive/2011/08/08/152776.html</link><dc:creator>Jiang Guogang</dc:creator><author>Jiang Guogang</author><pubDate>Mon, 08 Aug 2011 05:03:00 GMT</pubDate><guid>http://www.shnenglu.com/guogangj/archive/2011/08/08/152776.html</guid><wfw:comment>http://www.shnenglu.com/guogangj/comments/152776.html</wfw:comment><comments>http://www.shnenglu.com/guogangj/archive/2011/08/08/152776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/guogangj/comments/commentRss/152776.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/guogangj/services/trackbacks/152776.html</trackback:ping><description><![CDATA[<div>C++毫无疑问是Y件开发工具中的工业标准,但要说做Windows开发,现在恐怕看hq是?net比较划算Q?net的C++?#8220;Managed C++”Q我看了之后只想说这句话Q这货不是C++。这里顺带提起一ơ面试经历,是我面试别hQ我告诉来面试的人:“我们目前的Y仉目用C++开发,没用.net?#8221;他一脸诧异地问道Q?#8220;你现在用的是VC6Q?#8221;我说Q?#8220;不是Q我用的是VS2008?#8221;他说Q?#8220;那你用的是.netQ从VS2003开始都?net?#8221;我解释道Q?#8220;我在做本地开发,没?net?#8221;而这位哥们l坚持说我就是用.net开发,我很郁闷Q也许我们说的是不同的话Q互怹间无法理解得了。总而言之,Managed C++的用h极少的,从某U意义上_C#?net而生Q?net也ؓC#而生Q用C++?net开发可是半点优劉K没有。这是题外话QOKQ进入正题?br /><br /><strong>1Q最最最要注意的是Q垃圑֛收机?br /></strong><br />C#没有deleteQ其托管资源不需要deleteQ也不能昑ּdeleteQ完全由.net的垃圑֛收器来管理?br /><br />E微有点ȝ的是非托资源,比如打开的文件句柄,创徏的位囑֏柄等Q这些是非托资源,如果一直不昑ּ回收Q那有可能会来多Q那怎么办?q方面的问题在绝大多数的C#的书c上都有讲述Q有时候看得h晕头转向的,其实我们只要遵@q么一U规范,可以应对不?00%Q也?9%的情况了Q?br /><br />cM没有非托资源的情况下,啥都不用,也不用实现析构函数?br />如果cM有非托管资源Q则应该实现析构函数Qƈ且在析构函数中释放资源?br />如果cM有非托管资源Qƈ且想让类使用者提前释放掉q些非托资源的话,那就实现一个Dispose的方法来释放非托资源,再加上这么一行代码GC.SuppressFinalize(this);以此来告?net的垃圑֛收器Q不需要再调用一ơ析构函数来释放非托资源了?br /><br /><strong>2Q?引用Qstruct/class</strong><br /><br />C#的struct和class差别很大Q不像C++那样几乎没什么差别,struct适用于创建小的结构,它用的是g递,而用class的对象用的是引用传递?br /><br />|存在于栈区,而引用,则存在于堆区?br /><br />structQ存在于栈区Q可用new初始化(也可以不用)Q没有默认构造函敎ͼ但可以添加构造函敎ͼ也可以不dQ,没析构函敎ͼ不能被ѝ?br />classQ存在于堆区Q必ȝnew初始化,有默认构造函敎ͼ有析构函敎ͼ当然能被l承啦?br /><br /><strong>3Q注意装和拆箱</strong><br /><br />值和引用有时候得互相转换Q比如当一个函数需要引用参敎ͼ而你却把g了过去,那么存在这么一个隐式{换的q程了,q个q程会有额外的性能开销Q所以要量避免。D{为引用叫“装箱”Q反q来引用转ؓ值叫“拆箱”。装可以是隐式的,但拆׃定是昑ּ的,如:<br /><br />int i = 123;<br />object o = i; //装箱Q隐式)<br />int j = (int) o; //拆箱Q显式)<br /><br /><strong>4Q其它一些语法差?br /></strong><br />4.1 虚方法必d上override修饰Q否则会有warning?br />4.2 没有了C++构造函C?#8220;初始化列?#8221;?br />4.3 布尔和整型是两种不同cd?br />4.4 switch语句的行为和C++的略有不同?br /><br /></div><img src ="http://www.shnenglu.com/guogangj/aggbug/152776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/guogangj/" target="_blank">Jiang Guogang</a> 2011-08-08 13:03 <a href="http://www.shnenglu.com/guogangj/archive/2011/08/08/152776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在VMWare上装MacQAMD CPUQ最l没搞定…?/title><link>http://www.shnenglu.com/guogangj/archive/2011/08/05/152587.html</link><dc:creator>Jiang Guogang</dc:creator><author>Jiang Guogang</author><pubDate>Fri, 05 Aug 2011 13:40:00 GMT</pubDate><guid>http://www.shnenglu.com/guogangj/archive/2011/08/05/152587.html</guid><wfw:comment>http://www.shnenglu.com/guogangj/comments/152587.html</wfw:comment><comments>http://www.shnenglu.com/guogangj/archive/2011/08/05/152587.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/guogangj/comments/commentRss/152587.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/guogangj/services/trackbacks/152587.html</trackback:ping><description><![CDATA[<p>本文分np|l验?br /><br />装MacQ其实ƈ不是Z好玩Q而是想研I下如何q行iPhone开发,公司的电脑是Intel的,但配|太ơ,玩不hQ于是打在家装个虚拟机搞搞Q我的CPU是AMD的Phenom8450Q下面截个图Q保证是支持虚拟化技术的Qƈ且确认了在BIOS中已l打开?br /><img border="0" alt="" src="http://www.shnenglu.com/images/cppblog_com/guogangj/mac_cpu_status.png" width="478" height="370" /><br />前几星期Q听说朋友那里已l搞好了一套,于是周末带移动硬盘去他那里拷贝了一份,回来q行Q就出现CPU停止工作的问题,试数遍都不行,于是打算自己新安装一个,׃不少旉下了一个DMG文g。还是没搞定Q卡在引g面?br /><br />参考网上的一些说法,更换用于引导的ISOQ无果,出现了不同的错误?br /><br />1Q当使用默认?#8220;darwin_snow.iso”或?#8220;darwin300.iso”的时候,出现q样的错误:<br /><img border="0" alt="" src="http://www.shnenglu.com/images/cppblog_com/guogangj/mac_error_1.png" width="523" height="216" /><br /><br />2Q当使用LAMD CPU能用?#8220;darwin_snow_legacy.iso”的时候,卡在q个画面上,半天不动Q只好放弃:<br /><img border="0" alt="" src="http://www.shnenglu.com/images/cppblog_com/guogangj/mac_error_2.png" width="1033" height="775" /><br /><br />3Q当使用“Rebel EFI.iso”的时候,出现了这L错误Q?br /><img border="0" alt="" src="http://www.shnenglu.com/images/cppblog_com/guogangj/error.png" width="520" height="175" /><br /><br />M无法l箋了,我尝试的l节׃一一在这里脓出来了,|上有个哥们也是用AMD CPU的,一番折腑֐Q他的结论是“珍爱生命Q远Mac”?br /><br />了Q暂时放弃,真要弄iPhone的话估计q是直接C台Macbook来得划算Q折腾不赗?/p><img src ="http://www.shnenglu.com/guogangj/aggbug/152587.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/guogangj/" target="_blank">Jiang Guogang</a> 2011-08-05 21:40 <a href="http://www.shnenglu.com/guogangj/archive/2011/08/05/152587.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gSOAP在Windows Mobileq_上的使用ȝhttp://www.shnenglu.com/guogangj/archive/2011/08/02/152280.htmlJiang GuogangJiang GuogangTue, 02 Aug 2011 05:57:00 GMThttp://www.shnenglu.com/guogangj/archive/2011/08/02/152280.htmlhttp://www.shnenglu.com/guogangj/comments/152280.htmlhttp://www.shnenglu.com/guogangj/archive/2011/08/02/152280.html#Feedback1http://www.shnenglu.com/guogangj/comments/commentRss/152280.htmlhttp://www.shnenglu.com/guogangj/services/trackbacks/152280.htmlgSOAP是很好的东西Q它弥补了C++库对Webservice支持的不I让C++的开发者能够轻松用WebserviceQ不q说L其实也不LQ到目前为止Q我没有用过什么开源的库是一到手p很顺利地使用的,Ll过了这个那个的折腾Q最后才能用Q虽然很多问题也都是只差那么一丁点儿,但就是那么一丁点儿却让h焦头烂额?/p>

Windows Mobile没落?#8230;…我不止一ơ提赯话,我甚x疑我现在开发的Windows MobileE序是不是最后一个获得较多用LWindows MobileE序Q也许弄完了q个之后Q也没什么h再会涉q个领域了?/p>

ASMX接口定义文g

OKQ废话不说了Q言归正传,Webservice最最最典型的应用是什么?——更新天气Q你看看Webservice的入门文章,都是拿天气更C例,而我做的q个正好也是一个天气更斎ͼ接口是我定义的,具体׃贴出来了Q总而言之我们要从WSDLq个接口文g出发Q假设你已经有了q个WSDL文g了,文g名ؓ“SSPWeatherService.asmx”。(不懂WSDL的话先了解下WebserviceQ?/p>

获取一份gSOAPq安?/h2>

接着要去获取一份gSOAP的代码,地址是gsoap2.sourceforge.netQ我下蝲的版本是2.8.3Q这?011q?月更新的Q在q前我下载了2.8.2Q这两个版本用v来还有些微小的差别,哪个更好Q当然是新的更好了?/p>

下蝲完之后当然是解压~,我是把它解压~到“D:\gsoap”q个路径下。然后给pȝ环境变量“path”增加q么一个\径:“D:\gsoap\gsoap\bin\win32\”Q这完全是ؓ了一会儿方便调用?#8220;wsdl2h.exe”?#8220;soapcpp2.exe”Q否则你q得输入exe的完整\径?/p>

Ҏasmx生成相关文g

刚才那个WSDL文g“SSPWeatherService.asmx”攑ֈ你的工作目录下,比如“D:\work\SSPWeatherUpdate_WS”Q然后用命令行工具Q如下执行:

其中涉及C个命令:
>wsdl2h SSPWeatherService.asmx -o SSPWeatherService.h
>soapcpp2 SSPWeatherService.h -ID:\gsoap\gsoap\import -C -x -i
W一个命令是ҎWSDL文g生成相应的头文gQ用-o参数指定生成的头文g的名U?br />W二个命令死Ҏ刚生成的头文件来生成别的头文件和cpp文g?I后面是gSOAP的import目录的\径,q个是必ȝQ?C表示只生成客L代码Q这正是我们需要的Q?x可以生成一些垃圾,-i表示生成C++装代码Q用C++装好的代码比纯C代码好用多了?/p>

对生成内容的单说?/h2>

接下来你查看目录中的文g可能是这P
soapC.cpp
soapH.h
soapSSPWeatherServiceSoapProxy.cpp
soapSSPWeatherServiceSoapProxy.h
soapStub.h
SSPWeatherService.asmx
SSPWeatherService.h
SSPWeatherServiceSoap.nsmap
也就是说Q除了asmx和第一步生成的h文g之外Q之后生成的文g有这些:
soapC.cpp
soapH.h
soapSSPWeatherServiceSoapProxy.cpp
soapSSPWeatherServiceSoapProxy.h
soapStub.h
SSPWeatherServiceSoap.nsmap
可能你还会碰C面这几个文gQ这跟你原本的asmx的接口定义有关系Q?br />soapSSPWeatherServiceSoap12Proxy.cpp
soapSSPWeatherServiceSoap12Proxy.h
SSPWeatherServiceSoap12.nsmap
“12”表示soap?.2版本Q你比较一下,发现q几个文件跟上面提到的几个文件的内容是几乎一致的Q除了里面的名称大多都加上了“12”Q对我来说这几个文g是不需要的Q所以删除掉了?/p>

创徏一个工E?/h2>

接下d然是用Visual Studio创徏一个工E来使用刚才生成的这些文件了。我创徏的Project名称?#8220;SSPWeatherUpdate_WS”Q目录也是刚才的那个目录Qؓ了简单v见,创徏一个consolecd的程序用来测试就行了?/p>

然后把刚才生成的q些文gd到这个Project中去Q?br />soapC.cpp
soapH.h
soapSSPWeatherServiceSoapProxy.cpp
soapSSPWeatherServiceSoapProxy.h
soapStub.h
SSPWeatherService.h
也许你注意到了,asmx和nsmap文g是不需要添加的?/p>

然后是很关键的一部,把D:\gsoap\gsoap目录下的stdsoap2.h和stdsoap2.cpp复制到刚创徏的工E目录ƈd到工E中厅R完了之后Project里应该有q些东西Q?br />

~译以及可能的问?/h2>

~译一下看看,能不能通过。可能出C一大堆的错误,可能你会看到q样的出错提C:
“1>.\soapC.cpp(16) : warning C4627: '#include "soapH.h"': skipped when looking for precompiled header use”
q是因ؓ工程讄了?#8220;预编译头”Q我们不要用预~译_工程属性设|如下图Q?br />
讄后rebuildQ看看还有没有什么问题?在我q里出现了这L错误提示Q?br />1>.\soapC.cpp(850) : error C3861: 'soap_outdateTime': identifier not found
1>.\soapC.cpp(855) : error C3861: 'soap_indateTime': identifier not found
表面上看是漏掉某个头文gQ或者某个编译选项不正引P但其实,q正是让我郁闷了好久Q努力了好久Q最后才发现无解的问题,其中波折׃惛_q里赘述了,如果你认己技术水q不错,可以直接摆^q个问题的话不妨试一下看Q但如果旉不是很多的话我劝你就了Q直接采Uxq个l论QgSOAP在WM环境下不支持WSDL中的datetimecdQ我不知道这不bugQ可能准说“支持不佳”Q如果前面的asmx是你定义的话Q你改一改,把其中的datetimecd改ؓstringQ然后自己在E序中再作{换,如果asmx不是你定义的话,那就很不q怺Q我也没辙了Q修改gSOAP的代码是很痛苦的工作Q我费了很大力气最后都没解冻I如果你有能力解决Q不妨跟我分享一下?/p>

使用Webservice

我直接脓上我的完整代码,希望能够抛砖引玉?/p>

#include "stdafx.h"
#include 
<string>
#include 
"soapSSPWeatherServiceSoapProxy.h"
#include 
"SSPWeatherServiceSoap.nsmap"

using namespace std;

BOOL UTF8ToTChar(
const char* pUTF8Str, TCHAR* &pTChar)
{
 
//First, convert it to UNICODE
 INT len = MultiByteToWideChar(CP_UTF8, 0, pUTF8Str, -1, NULL, 0);
 WCHAR 
*pWC = new WCHAR[len];
 MultiByteToWideChar(CP_UTF8, 
0, pUTF8Str, -1, pWC, len);
 pWC[len
-1= '\0';

 
//Second, convert UNICODE to TCHAR
#ifdef UNICODE
 pTChar 
= pWC;
#else
 len 
= WideCharToMultiByte(CP_ACP, 0, pWC, -1, NULL, 0, NULL, NULL);
 pTChar 
= new TCHAR[len];
 WideCharToMultiByte(CP_ACP, 
0, pWC, -1, pTChar, len, NULL, NULL);
 pTChar[len
-1= '\0';
 delete[] pWC;
#endif

 
return TRUE;
}

BOOL TCharToUTF8(
const TCHAR* pTChar, char* &pUTF8Str)
{
 INT len;
#ifdef UNICODE
 
const WCHAR* pWC = pTChar;
#else
 len 
= MultiByteToWideChar(CP_ACP, 0, pTChar, -1, NULL, 0);
 WCHAR 
*pWC = new WCHAR[len];
 MultiByteToWideChar(CP_ACP, 
0, pTChar, -1, pWC, len);
 pWC[len
-1= '\0';
#endif
 len 
= WideCharToMultiByte(CP_UTF8, 0, pTChar, -1, NULL, 0, NULL, NULL);
 pUTF8Str 
= new char[len];
 WideCharToMultiByte(CP_UTF8, 
0, pTChar, -1, pUTF8Str, len, NULL, NULL);
 pUTF8Str[len
-1= '\0';
#ifdef UNICODE
 
//
#else
 delete[] pWC;
#endif
 
return TRUE;
}

void ReleaseChar(char* &pChar)
{
 
if(pChar!=NULL)
 {
  delete[] pChar;
  pChar 
= NULL;
 }
}

void ReleaseTChar(TCHAR* &pTChar)
{
 
if(pTChar!=NULL)
 {
  delete[] pTChar;
  pTChar 
= NULL;
 }
}

#define OUTPUT_BUFF_LEN 512 
void DbgStrOut(const TCHAR *fmt, 

 TCHAR szOutStr[OUTPUT_BUFF_LEN]; 

 va_list ap; 
 va_start(ap, fmt); 
 StringCbVPrintf(szOutStr, OUTPUT_BUFF_LEN, fmt, ap); 
 va_end(ap); 

 OutputDebugString(szOutStr); 
}

int _tmain(int argc, _TCHAR* argv[])
{

 SSPWeatherServiceSoapProxy gs(SOAP_C_UTFSTRING);
 gs.soap_endpoint 
= "http://www.sosopi.com/weathercastservice/SSPWeatherService.asmx";

 _ns1__FindCityByString input;
 _ns1__FindCityByStringResponse output;
 CHAR
* pszUTF8;
 TCHAR
* pszCityCode;
 TCHAR
* pszCityName;
 TCharToUTF8(L
"闵行", pszUTF8);
 input.CityToFind 
= pszUTF8;
 ReleaseChar(pszUTF8);
 
if(SOAP_OK==gs.FindCityByString(&input, &output))
 {
  std::vector
<ns1__CityInfo * >::iterator it = output.CityInfo.begin();
  
while (it!=output.CityInfo.end())
  {
   ns1__CityInfo 
*pCityInfo = (*it);

   UTF8ToTChar(pCityInfo
->CityCode.c_str(), pszCityCode);
   UTF8ToTChar(pCityInfo
->CityName.c_str(), pszCityName);
   DbgStrOut(L
"%s %s\n", pszCityCode, pszCityName);
   ReleaseTChar(pszCityCode);
   ReleaseTChar(pszCityName);
   
++it;
  }
  
  
if(output.MatchCityNumber>=1)
  {
   _ns1__GetWeatherByCityCode input2;
   _ns1__GetWeatherByCityCodeResponse output2;
   input2.CityCode 
= output.CityInfo[0]->CityCode;
   
if(SOAP_OK==gs.GetWeatherByCityCode(&input2, &output2))
   {
    TCHAR
* pszUpdateTime;
    
float fRtTemperature;
    TCHAR
* pszWindDirection;
    TCHAR
* pszWindForce;

    UTF8ToTChar(output2.WeatherCast
->UpdateTime.c_str(), pszUpdateTime);
    fRtTemperature 
= output2.WeatherCast->RtTemperature;
    UTF8ToTChar(output2.WeatherCast
->RtWindDirection.c_str(), pszWindDirection);
    UTF8ToTChar(output2.WeatherCast
->RtWindForce.c_str(), pszWindForce);
    
    DbgStrOut(L
"Update Time : %s\n", pszUpdateTime);
    DbgStrOut(L
"Temperature : %.1f\n", fRtTemperature);
    DbgStrOut(L
"Wind Direction : %s\n", pszWindDirection);
    DbgStrOut(L
"Wind Force : %s\n", pszWindForce);

    ReleaseTChar(pszUpdateTime);
    ReleaseTChar(pszWindDirection);
    ReleaseTChar(pszWindForce);

    ns1__ArrayOfOneDayWeather 
*pOneDay = output2.WeatherCast->DayWeather;
    std::vector
<class ns1__OneDayWeather * >::iterator itDW = pOneDay->OneDayWeather.begin();
    
//std::vector<ns1__CityInfo * >::iterator it = output.CityInfo.begin();
    while (itDW!=pOneDay->OneDayWeather.end())
    {
     DbgStrOut(L
"##########\n");
     ns1__OneDayWeather 
*pDayWeather = *itDW;
     DbgStrOut(L
"\tDay temp : %.1f\n", pDayWeather->DtTemperature);
     DbgStrOut(L
"\tDay weather : %d\n", pDayWeather->DtWeatherID);
     TCHAR
* pszDayWindDirection;
     TCHAR
* pszDayWindForce;
     UTF8ToTChar(pDayWeather
->DtWindDirection.c_str(), pszDayWindDirection);
     UTF8ToTChar(pDayWeather
->DtWindForce.c_str(), pszDayWindForce);
     DbgStrOut(L
"\tDay Wind Direction : %s\n ", pszDayWindDirection);
     DbgStrOut(L
"\tDay Wind Force : %s\n", pszDayWindForce);
     ReleaseTChar(pszDayWindDirection);
     ReleaseTChar(pszDayWindForce);

     DbgStrOut(L
"\tNight temp : %.1f\n", pDayWeather->NtTemperature);
     DbgStrOut(L
"\tNight weather : %d\n", pDayWeather->NtWeatherID);
     TCHAR
* pszNightWindDirection;
     TCHAR
* pszNightWindForce;
     UTF8ToTChar(pDayWeather
->NtWindDirection.c_str(), pszNightWindDirection);
     UTF8ToTChar(pDayWeather
->NtWindForce.c_str(), pszNightWindForce);
     DbgStrOut(L
"\tNight Wind Direction : %s\n ", pszNightWindDirection);
     DbgStrOut(L
"\tNight Wind Force : %s\n", pszNightWindForce);
     ReleaseTChar(pszNightWindDirection);
     ReleaseTChar(pszNightWindForce);
     
++itDW;
    }
   }
  }
 }
 
return 0;
}

代码说明

使用Webservice的过E中Q我通过查找“闵行”来找到我的城市,再根据城市ID来获取天气,其实代码q不多,多在字符~码转换和Debug输出q部分,因ؓ我们的XML使用UTF-8~码Q而我们的软g界面通常使用Unicode~码Q所以得转换Q英文的情况下不转换是没什么问题的Q但汉字一定得转,否则是q了?/p>

另外特别注意q个地方Q?br /> SSPWeatherServiceSoapProxy gs(SOAP_C_UTFSTRING);
 gs.soap_endpoint = "SOAP_C_UTFSTRINGQ这个是用来指定UTF-8~码的,一定不能少Q下面这个soap_endpoint参数则用来指明这个Webservice的服务地址?/p>

可能的问题以及解x?/h2>

1Q超?/strong>

E序发布之后有h反映不能使用QWindows Mobile如果用电脑直q的话就没Q何问题,但如果用GPRS上网的话q真的可能出现失败的情况Q我认ؓq是因ؓGPRS速度太慢Q用h感觉q不如以?6K猫拨号上|)D时的缘故。可以通过下面办法来解冻I
 pGS.accept_timeout = 30;
 pGS.connect_timeout = 30;
 pGS.recv_timeout = 30;
 pGS.send_timeout = 30;
 pGS.linger_time = 30;

2Q无法用WAP方式更新

许多人用手机上网的时候都喜欢用WAP方式Q就是U用代理服务器的方式Q移动的接入点叫cmwapQ联通的叫uniwapQ代理的地址?#8220;10.0.0.172”。由于连接用了代理,gSOAP也得昄指定一个代理,Ҏ如下Q?br />pGS->proxy_host = “10.0.0.172”;
pGS->proxy_port = 80;
可能不一定是“10.0.0.172”Q端口也可能不是80Q这两个信息可以通过q接理器相关的API来获得,具体׃展开了,提示一下,用这个:ConnMgrProviderMessage?/p>

我不知道q有什么疑难杂症,q篇文章也无法囊括所有内容,大家只能见招拆招了?br />



Jiang Guogang 2011-08-02 13:57 发表评论
]]>帮Windows Mobile实现gmtimeQlocaltimeQmktime和strftimehttp://www.shnenglu.com/guogangj/archive/2011/06/30/149827.htmlJiang GuogangJiang GuogangThu, 30 Jun 2011 08:45:00 GMThttp://www.shnenglu.com/guogangj/archive/2011/06/30/149827.htmlhttp://www.shnenglu.com/guogangj/comments/149827.htmlhttp://www.shnenglu.com/guogangj/archive/2011/06/30/149827.html#Feedback2http://www.shnenglu.com/guogangj/comments/commentRss/149827.htmlhttp://www.shnenglu.com/guogangj/services/trackbacks/149827.html阅读全文

Jiang Guogang 2011-06-30 16:45 发表评论
]]>
用VC++讉K文本文ghttp://www.shnenglu.com/guogangj/archive/2011/06/08/148257.htmlJiang GuogangJiang GuogangWed, 08 Jun 2011 04:26:00 GMThttp://www.shnenglu.com/guogangj/archive/2011/06/08/148257.htmlhttp://www.shnenglu.com/guogangj/comments/148257.htmlhttp://www.shnenglu.com/guogangj/archive/2011/06/08/148257.html#Feedback2http://www.shnenglu.com/guogangj/comments/commentRss/148257.htmlhttp://www.shnenglu.com/guogangj/services/trackbacks/148257.html阅读全文

Jiang Guogang 2011-06-08 12:26 发表评论
]]>
Windows Mobile上网讄详细图解http://www.shnenglu.com/guogangj/archive/2011/05/31/147787.htmlJiang GuogangJiang GuogangTue, 31 May 2011 13:48:00 GMThttp://www.shnenglu.com/guogangj/archive/2011/05/31/147787.htmlhttp://www.shnenglu.com/guogangj/comments/147787.htmlhttp://www.shnenglu.com/guogangj/archive/2011/05/31/147787.html#Feedback1http://www.shnenglu.com/guogangj/comments/commentRss/147787.htmlhttp://www.shnenglu.com/guogangj/services/trackbacks/147787.html开?-> 讄 -> q接 -> q接
打开q接讄对话框,在我的手Z是这hC的Q?br />
<?>
各台机器上可能不一Pq没关系Q我们现在点“高”标签Q如图:

<?>
再点“选择|络”按钮Q如图:

<?>
点击下拉框,发觉除了“单位讄”?#8220;Internet讄”两个|络讄之外Q还有一个名?#8220;MMS”的设|,Z减少qhQ我们现在只要保?#8220;单位讄”?#8220;Internet 讄”Q把其它的设|删除。在下拉框中选中“MMS”Q如图:

<?>
?#8220;~辑”按钮Q如图:

<?>
选择“常规”标签Q如图:

<?>
?#8220;删除讄”按钮?br />全部删除不必要的|络讄之后Q(特别说明Q事实上Q?#8220;单位讄”?#8220;Internet 讄”两个|络讄虽然不能被删除,但它们的名称却是可以改的Q这里假设这两个|络讄的名字还是默认的名字Q没有被修改Q在“选择|络”对话框中Q按照图3去设|,上面选择“Internet 讄”Q下面选择“单位讄”Q?#8220;单位讄”是个不太好理解的名称Q在英文版的Windows Mobile中,它的名字?#8220;My Work Network”Q直译过来应该是“我的工作|络”Q?#8220;Internet 讄”在英文版中的名称?#8220;My ISP”Q直译过来应该是“我的Internet服务提供?#8221;Qȝ来说Q意思都不是很明,q也是让惑的原因之一?br />特别要说明一下的是Q?#8220;Internet 讄”?#8220;单位讄”q两个网l设|是删除不掉的?br />我们现在单地q么理解Q?br />“Internet 讄”是直q模式,?#8220;单位讄”是代理模式?br />现在Q我们点“在程序自动连接到Internet?#8221;下面?#8220;~辑”按钮Q如图:

<?>
如果已经有连接项了,那么先把q接删除,Ҏ是按住连接项Q然后在呼出的上下文菜单中选择“删除”Q如图:

<?>
在图7的界面中?#8220;新徏”按钮Q然后如图设|:

<?>
其中的名U可以v别的名字Q不一定是“UdInternet”Q这个ƈ不媄响最l的l果Q好了之后点“下一?#8221;Q再如图讄Q?br />
<?0>
特别说明Q我使用的网l是Ud的,所以这里填cmnetQ如果我没记错的话,联通的q里应该填写“uninet”Q联?G|络的话应该填写“3gnet”Q电信的则填?#8220;ctnet”?br />好了之后?#8220;下一?#8221;Q这步留I,什么都不用填,直接点完成,如图Q?br />
<?1>
q个时候,我们p看到我们刚添加的q接了Q如图:

<?2>
?#8220;ok”Q回C一界面Q现在点“在程序自动连接到专用|络?#8221;下面?#8220;~辑”按钮Q出CcM?的界面,删除掉不必要的连接项后,我们?#8220;新徏”Q如图设|:

<?3>
完成后点下一步,再如图设|:

<?4>
q里我输入的是cmwapQ因为我用的是移动的|络Q联通的应该是uniwapQ联?G的应该是3gwapQ电信的应该是ctwapQ大家根据实际情况输入。然后下一步,q步不需要填写什么内容,留空卛_。再?#8220;完成”Q如图:

<?5>
“单位讄”和前面的“Internet 讄”不同的是多了“VPN”?#8220;代理服务器设|?#8221;的标{,从上囑֏以看出来Q所以我前面也提CQ?#8220;Internet 讄”是直q模式,?#8220;单位讄”是代理模式。我们接下来讄代理服务器,?#8220;代理服务器设|?#8221;标签Q如图设|:

<?6>
再点?#8220;高”按钮Q如图设|:

<?7>
okQokQok……
q样应该完成了?br />如果q是不行Q那估计是手机的电话模块有问题Q我遇到过q种情况Q电话能打,短信能收能发Q但|络无论如何都用不了Q重新刷机有可能解决q个问题Q另外还有可能就是电话欠费而停ZQ即便你充了||络服务也未必马上能开通,关闭q新打开电话或者重启手机可能解册个问题?img src ="http://www.shnenglu.com/guogangj/aggbug/147787.html" width = "1" height = "1" />

Jiang Guogang 2011-05-31 21:48 发表评论
]]>
IE9无法完全关闭cleartype效果http://www.shnenglu.com/guogangj/archive/2011/05/02/145502.htmlJiang GuogangJiang GuogangMon, 02 May 2011 10:22:00 GMThttp://www.shnenglu.com/guogangj/archive/2011/05/02/145502.htmlhttp://www.shnenglu.com/guogangj/comments/145502.htmlhttp://www.shnenglu.com/guogangj/archive/2011/05/02/145502.html#Feedback6http://www.shnenglu.com/guogangj/comments/commentRss/145502.htmlhttp://www.shnenglu.com/guogangj/services/trackbacks/145502.html
此图是IE8昄google首页的效果,字体很清晰?br>

看看q是IE8的选项Q在多媒体里有一?#8220;Lcleartype用于HTML*”的选项Q对我来说很关键Q我L把钩子去掉?br>

q是用IE9昄google首页的效果,看到英文字体很模p(有些人很喜欢q种“模糊”Q而我极度反感Q?br>

再看IE9的选项Q已l把那个选项拿掉了?br>
攑ּ一个YӞ只需要一个理由,如果q个理由_恶的话?br>
微Y的一些做法确实o我越来越看不懂了Q当我们的用^台逐渐转移到手机,qx电脑{之后,我如今渐渐发觉,操作pȝq个壁垒也不是那么坚不可摧的Q也许我有一天会真的攑ּWindows?

Jiang Guogang 2011-05-02 18:22 发表评论
]]>
һһþaaۺϾƷ| ĻƷþþþ| պһþ | þþøƵ| ۺɫ77777þ| þѸƵ| þþþþùƷ| þùAVJUST鶹| ҹþþþþþþþ| 㽶þҹɫƷС˵| þֻоƷҳ| þó˾ƷƵ| ޹˾þһþ | þþŷղ | ھƷþþþþþþõӰ| Ʒ18þþ⺾| ޾þһ| ƷþþĻѿ| þۺ97ɫֱ| ѾþҹƷ| Ưޱ˾þþƷ| þþþ߽ۺϳ| ۺϾƷ㽶þ97| þùƷHDAV| ޹ƷþõӰŷ| þһŷպ| þþƷþ| ޹Ʒþþ| ھƷþ| 97Ʒ˾þþô߽97| Ůþþþþ| þù޾ƷӰԺ| ƷþþƷ| þŷƷ| þ99Ʒ| պŷۺϾþӰԺd3| ҹþӰԺ| þùĻ| Ƶþ| 칫ҾþþƷ| þùҹAVӰԺ|