﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-R.R.-随笔分类-Windows</title><link>http://www.cppblog.com/wiisola/category/13369.html</link><description>愿我来世 身如琉璃</description><language>zh-cn</language><lastBuildDate>Thu, 20 May 2010 03:39:04 GMT</lastBuildDate><pubDate>Thu, 20 May 2010 03:39:04 GMT</pubDate><ttl>60</ttl><item><title>GCC依赖库顺序问题</title><link>http://www.cppblog.com/wiisola/archive/2010/05/18/115637.html</link><dc:creator>R.R.</dc:creator><author>R.R.</author><pubDate>Mon, 17 May 2010 18:01:00 GMT</pubDate><guid>http://www.cppblog.com/wiisola/archive/2010/05/18/115637.html</guid><wfw:comment>http://www.cppblog.com/wiisola/comments/115637.html</wfw:comment><comments>http://www.cppblog.com/wiisola/archive/2010/05/18/115637.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wiisola/comments/commentRss/115637.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wiisola/services/trackbacks/115637.html</trackback:ping><description><![CDATA[今天在把linux下做的ipmsg移植到windows过程中，因为包含了一个开源库SimpleSocket，而这个库又引用了winsock2，没太注意就写下了下面的makefile：<br><br>
<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-FAMILY: Monaco; FONT-SIZE: 12px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">g++ -o tt tt.o <span style="COLOR: #000000">-</span><span style="COLOR: #000000">lws2_32&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">lclsocketd</span></div>
<br>结果报出了N多丑陋的undefined reference..之后尝试将-lws2_32和-lclsocketd交换位置后，编译通过。<br><br>上网查了下，发现gcc编译时依赖库的顺序是很重要的。比如说，liba.a依赖于libb.a，则必须写成-la -lb，似乎感觉这种顺序很奇怪。另外参考网上<a href="http://www.cppblog.com/findingworld/archive/2008/11/09/66408.html">http://www.cppblog.com/findingworld/archive/2008/11/09/66408.html</a>的内容，在库比较多依赖关系比较复杂或者相互依赖或者自己不清楚的情况下，可以采取下面2种办法：<br><br>1、-la -lb -la，丑陋，但是有效。<br>2、gcc有这样的选项，-Xlinker，写成如下格式可以强制gcc重复查找依赖库：<br><br>
<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-FAMILY: Monaco; FONT-SIZE: 12px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">g++ -o tt tt.o -Xlinker "-(" <span style="COLOR: #000000">-</span><span style="COLOR: #000000">lws2_32&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">lclsocketd "-)"</span></div>
<br>这样在括号中的库的依赖关系就不需要你操心啦，虽然会延长链接时间。不过本人在实际使用过程中，g++认不出"-)"，不加也可以链接成功。 
<img src ="http://www.cppblog.com/wiisola/aggbug/115637.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wiisola/" target="_blank">R.R.</a> 2010-05-18 02:01 <a href="http://www.cppblog.com/wiisola/archive/2010/05/18/115637.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VS中为GUI程序添加console窗口</title><link>http://www.cppblog.com/wiisola/archive/2010/05/15/115474.html</link><dc:creator>R.R.</dc:creator><author>R.R.</author><pubDate>Sat, 15 May 2010 14:31:00 GMT</pubDate><guid>http://www.cppblog.com/wiisola/archive/2010/05/15/115474.html</guid><wfw:comment>http://www.cppblog.com/wiisola/comments/115474.html</wfw:comment><comments>http://www.cppblog.com/wiisola/archive/2010/05/15/115474.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wiisola/comments/commentRss/115474.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wiisola/services/trackbacks/115474.html</trackback:ping><description><![CDATA[为了方便调试，需要在VS中为GUI程序添加console窗口。<br><br>项目 -&gt; 属性 -&gt; 配置属性 -&gt; 生成事件 -&gt; 生成后事件 -&gt; 命令行：<br><br>
<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-FAMILY: Monaco; FONT-SIZE: 12px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">editbin&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">SUBSYSTEM:CONSOLE&nbsp;$(OUTDIR)\ipmsg.exe</span></div>
<br>ipmsg.exe改为可执行代码的文件名。 
<img src ="http://www.cppblog.com/wiisola/aggbug/115474.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wiisola/" target="_blank">R.R.</a> 2010-05-15 22:31 <a href="http://www.cppblog.com/wiisola/archive/2010/05/15/115474.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>小结一下今天遇到的编码问题</title><link>http://www.cppblog.com/wiisola/archive/2010/04/11/112209.html</link><dc:creator>R.R.</dc:creator><author>R.R.</author><pubDate>Sat, 10 Apr 2010 17:37:00 GMT</pubDate><guid>http://www.cppblog.com/wiisola/archive/2010/04/11/112209.html</guid><wfw:comment>http://www.cppblog.com/wiisola/comments/112209.html</wfw:comment><comments>http://www.cppblog.com/wiisola/archive/2010/04/11/112209.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wiisola/comments/commentRss/112209.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wiisola/services/trackbacks/112209.html</trackback:ping><description><![CDATA[<p>GVIM用的是UTF-8，cmd为GB2312，中文输出的时候就会乱码；<br><br>将GVIM中的中文转成GB2312时输出正常；<br><br>SQLITE open时用的是UTF-8，insert时因为直接取的文件中的内容，输出cmd正常，所以是用的GB2312；<br>这时候在select中文的时候在GVIM输入中文字，即使用UTF-8，则无法找到GB2312的数据；<br><br>在insert时将数据全部转成UTF-8后，直接select UTF-8就能够找到，但输出cmd为乱码；<br><br>这样就全部解释清楚了。<br>现在要做的就是在insert时转为UTF-8，至于cmd那垃圾输出就算了，我可没兴趣为了输出个东西看还要转成GB2312，再次喷下微软。。</p>
<img src ="http://www.cppblog.com/wiisola/aggbug/112209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wiisola/" target="_blank">R.R.</a> 2010-04-11 01:37 <a href="http://www.cppblog.com/wiisola/archive/2010/04/11/112209.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]深入分析Windows和Linux动态库应用异同</title><link>http://www.cppblog.com/wiisola/archive/2010/03/31/111202.html</link><dc:creator>R.R.</dc:creator><author>R.R.</author><pubDate>Wed, 31 Mar 2010 12:28:00 GMT</pubDate><guid>http://www.cppblog.com/wiisola/archive/2010/03/31/111202.html</guid><wfw:comment>http://www.cppblog.com/wiisola/comments/111202.html</wfw:comment><comments>http://www.cppblog.com/wiisola/archive/2010/03/31/111202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wiisola/comments/commentRss/111202.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wiisola/services/trackbacks/111202.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 摘要：动态链接库技术实现和设计程序常用的技术，在Windows和Linux系统中都有动态库的概念，采用动态库可以有效的减少程序大小，节省空间，提高效率，增加程序的可扩展性，便于模块化管理。 <br><br>但不同操作系统的动态库由于格式 不同，在需要不同操作系统调用时需要进行动态库程序移植。本文分析和比较了两种操作系统动态库技术，并给出了将Visual C++编制的动态库移植到Linux上的方法和经验。 <br><br>1、引言 <br><br>动态库（Dynamic Link Library abbr，DLL）技术是程序设计中经常采用的技术。其目的减少程序的大小，节省空间，提高效率，具有很高的灵活性。 <br><br>采用动态库技术对于升级软件版本更加容易。与静态库（Static Link Library）不同，动态库里面的函数不是执行程序本身的一部分，而是根据执行需要按需载入，其执行代码可以同时在多个程序中共享。 <br><br>在Windows和Linux操作系统中，都可采用这种方式进行软件设计，但他们的调用方式以及程序编制方式不尽相同。本文首先分析了在这两种&nbsp;&nbsp;<a href='http://www.cppblog.com/wiisola/archive/2010/03/31/111202.html'>阅读全文</a><img src ="http://www.cppblog.com/wiisola/aggbug/111202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wiisola/" target="_blank">R.R.</a> 2010-03-31 20:28 <a href="http://www.cppblog.com/wiisola/archive/2010/03/31/111202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WIN右键添加实用菜单项</title><link>http://www.cppblog.com/wiisola/archive/2010/03/24/110486.html</link><dc:creator>R.R.</dc:creator><author>R.R.</author><pubDate>Wed, 24 Mar 2010 15:03:00 GMT</pubDate><guid>http://www.cppblog.com/wiisola/archive/2010/03/24/110486.html</guid><wfw:comment>http://www.cppblog.com/wiisola/comments/110486.html</wfw:comment><comments>http://www.cppblog.com/wiisola/archive/2010/03/24/110486.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wiisola/comments/commentRss/110486.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wiisola/services/trackbacks/110486.html</trackback:ping><description><![CDATA[<span>1、添加CMD在这里。<br>regedit -&gt; \HKEY_CLASSES_ROOT\Folder\shell -&gt; 新建CMD here项 -&gt; 新建Command项 -&gt; 键值cmd /K cd /d %L<br><br>2、添加右键以xx程序打开该文件。<br>regedit -&gt; \HKEY_CLASSES_ROOT\*\shell -&gt; 新建Edit with VimMate项 -&gt; 新建Command项 -&gt; 键值"D:\Program Files\VimMate\vim72\gvim.exe" -p --remote-tab-silent "%1"。其中Edit with VimMate为右键菜单显示的文字，键值为执行的程序，至于-p --remote-tab-silent参数，则是GVIM默认以标签形式打开（不重开新GVIM窗口）。</span> 
<img src ="http://www.cppblog.com/wiisola/aggbug/110486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wiisola/" target="_blank">R.R.</a> 2010-03-24 23:03 <a href="http://www.cppblog.com/wiisola/archive/2010/03/24/110486.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>