-
最新日志
标签
分类
-
博客统计
- 6,839 点击
功能
存档页
- 2012年01月
- 2011年12月
- 2011年10月
- 2011年06月
- 2011年04月
- 2011年02月
- 2011年01月
- 2010年12月
- 2010年11月
- 2010年10月
- 2010年09月
- 2010年08月
- 2010年07月
- 2010年06月
- 2010年05月
- 2010年04月
- 2010年03月
- 2010年02月
- 2010年01月
- 2009年12月
- 2009年11月
- 2009年10月
- 2009年09月
- 2009年08月
- 2009年07月
- 2009年06月
- 2009年05月
- 2009年04月
- 2009年03月
- 2009年02月
- 2009年01月
- 2008年12月
- 2008年11月
- 2008年10月
- 2008年09月
- 2008年08月
- 2008年07月
- 2008年06月
- 2008年05月
- 2008年04月
- 2008年03月
- 2008年02月
- 2008年01月
- 2007年12月
- 2007年11月
- 2007年10月
- 2007年09月
- 2007年08月
- 2007年07月
- 2007年06月
- 2007年05月
- 2007年03月
- 2007年01月
- 2006年12月
- 2006年11月
- 2006年10月
- 2006年09月
- 2006年08月
- 2006年07月
- 2006年06月
- 2006年05月
- 2006年04月
- 2006年03月
- 2006年02月
- 2006年01月
- 2005年12月
- 2005年11月
- 2005年10月
- 2005年09月
Category Archives: 软件开发
cppdb
简介 cppdb 是一个跨平台的 C++ 数据库操作类库,可以从 sourceforge 下载源码包或者直接从 SVN 库中检出。 编译 (VS2008) 首先使用 CMake 生成项目文件,下载后解压,运行 /bin/cmakegui.exe,需要设定 cppdb 的代码目录和项目文件的输出目录(比如在 cppdb 下面新建一个 build 目录,清楚一些)。 然后是配置,大致步骤: 点击 Configure 按钮,选择 VS2008 选中 DISABLE 组下面的的:DISABLE_ODBC、DISABLE_PQ、DISABLE_SQLITE 选中 MYSQL 组下面的 MYSQL_BACKEND_INTERNAL(这样最终就生成一个 cppdb.dll,不然还要附带一个 cppdb_mysql.dll),并分别设定 MYSQL_LIB 和 MYSQL_PATH 为 C:/Program … 繼續閱讀
KB2465361 导致静态链接 MFC 库的应用程序文件增大
摘要翻译自:Static MFC code bloat problem from VC2010 is now in VC2008 SP1+security fix 大致原因:themehelper.cpp 使用了 afxglobals.cpp 中的内联方法 AfxLoadSystemLibraryUsingFullPath,而 afxglobals.obj 会带来其它一堆跟班,然后最终的输出文件就无形中自我膨胀了。。。 解决方法:在 stdafx.cpp 中的 #include “stdafx.h” 之后加入如下代码,其实也就是把 MFC 中的方法复制一份出来,然后重新编译程序吧~ HMODULE AfxLoadSystemLibraryUsingFullPath(const WCHAR *pszLibrary) { WCHAR wszLoadPath[MAX_PATH+1]; if (::GetSystemDirectoryW(wszLoadPath, _countof(wszLoadPath)) == 0) … 繼續閱讀
设置系统时间 @ Win7
安全的代价就是会带来一些麻烦。 直接 SetSystemTime 肯定是不行了,先是从网上看到应该用 AdjustTokenPrivileges 来得到设置系统时间的权限(相关文章一般是说 XP 系统)。但实际用下来,设置失败,错误号 1300,也就是 ERROR_NOT_ALL_ASSIGNED,当时没怎么理解这个错误的具体含义。 然后也看到可以通过本地策略的用户权限分配中设置一下,奇怪,不是已经有管理员用户组了吗?不管 3×7=21,先把自己的用户账号加了进去,结果还是没用:( 然后在 stackoverflow 上无意看到可以用 Process Explorer 来查看进程的权限,单步跟踪一下,AdjustTokenPrivileges 之后还是没有出现相关权限(seSystemtimePriviledge)。 开始怀疑是 AdjustTokenPrivileges 是没用对,然后对 MSDN 上这个 API 的说明中关于 PreviousState 的一段说明又理解错误,还以为是调用 API 时参数处理不对。。。反正又捣鼓了半天没搞定。 再然后将程序运行为系统服务,呼呼,竟然就能设置系统时间了。。。再到 procexp 去看一下,果然权限也已经有了。 其实 MSDN 文档里已经写得很清楚了(The AdjustTokenPrivileges function cannot add … 繼續閱讀
SVN + Trac 环境升级
原来:Apache 2.0.x + Python 2.4.x + Subversion 1.4.x + Trac 0.10.x/0.11.x,配套 mod-python, svn-python, pysqlite …差不多已经使用了三年,仅小版本升过级。 现在:Apache 2.2.x + Python 2.6.x + Subversion 1.6.x + Trac 0.12.1,配套 mod-wsgi, svn-python …终于与时俱进啦! 过程: 1. 基础软件安装:Apache + Python,没啥好说,下载&安装。 2. Subversion 2.1 安装 自从 SVN … 繼續閱讀
VC9 开发的程序不用 Unicode 库就没有 XP 风格
才写了一个星期的小软件,最近突然发现没有 XP 风格了,折腾了十来分钟才发现是因为项目没有采用默认的 Unicode 字符集,而前几天作出这个决定是因为软件依赖的第三方类库提供的接口不是 Unicode 的,参数转换来转换去的实在有点麻烦。。。 关于这个问题,这里有一个比较详细的说明及解决方法:使程序界面具有XP风格(在VS2003和VS2005中),补充一点,VC9 里不需要编辑 *.rc2 文件,直接将 manifest 文件加入到项目里就可以了。
开发相关网文存档
主要最近几个月读过的一些,留个印记,方便以后查找。 首先是一个关于 C++ 0x 标准中部分新增特性的系列文章,有点意思,不过从右值引用开始看得我相当累。。。基本功太差啦:( C++0x Features in VC10, Part 1(译文) C++0x Features in VC10, Part 2(译文1、译文2、译文3) C++0x Features in VC10, Part 3(译文) 然后是 Joel 搞的一个 Hg 入门教程,简洁明了,也挺有意思,以后有空可以尝试一下这类分布式 VCS:) Mercurial 入门教程 再然后是一篇批评 ACE 的文章(一个只能用来学习的类库有啥用?),但感觉对于其中大部分观点,作者似乎多以揣测为主(也可能只因为这不是他想要的东西),我自己比较同意的主要是:学习曲线比较陡峭(对于没啥网络编程经验的,比如我),特定应用场合下很可能需要对类库进行适当的定制(反正一般场合用用应该是足够了)。另外,因为以前提到过的一个问题,感觉这个项目现在比较官僚,稍显活力不足。。。所以,以后有空也是可以试试其它一些网络库的,比如 Boost 里的 Asio。 学之者生,用之者死——ACE历史与简评 再再然后是前几天在水木的 VC … 繼續閱讀
继续用 ACE_High_Res_Timer
原来的问题说明看这里,目前的临时解决方法看这里,希望以后的官方版本能解决这个问题。 至于为什么要继续用,主要还是担心系统时间不在控制范围之内。
使用 Visual Studio 2008 调试程序时失去响应
今天碰到的问题:只要一开始调试,被调试的程序、整个 IDE 就会没响应,同时系统托盘里多出一个图标(Delay Notification),大概是说 VS 在忙,要等待还是怎么样之类的。 简单在网上搜索了一下,没找到明确的解答,倒是有一句话提醒了我:最近在这台机器上干啥了? 最近在公司有空的时候开始看那本暴厚的《Windows Internals, Fifth Edition》,边看就边照着在机器上折腾 WinDbg 之类的东东,然后这里头有个关于 Symbol 的设置,我在 Process Explorer 里使用的是: srv*c:websymbols*http://msdl.microsoft.com/download/symbols 在 WinDBG 里也可以这样用(Symbol Search Path),但似乎重启 WinDBG 后就没效果了,然后只好把它设置在系统环境变量 _NT_SYMBOL_PATH 里。 估计 VS 也使用了这个环境变量,而且在开始调试程序时会去自动加载一些相关的系统 PDB 文件,本地没有的就去微软网站上找,然后公司的网络又比较慢(有时是非常慢!),于是俺的 VS 就 Busy 了。。。试着删除了那个环境变量,果然正常啦! 回过头来再仔细看了下 WinDbg,原来那个设置是对的,但必须保存一下 Workspace(即便是默认的那个),这样退出 … 繼續閱讀
“由于应用程序配置不正确,应用程序未能启动”
主要针对 VC9 编译出来的程序,这个问题我曾经以为在《VC2005 的程序文件分发问题及解决》里已经搞清楚了:( 1. 到目前为止,我机器上的 VC9 运行库版本有三个:21022.8(对应 RTM)、30729.1(对应 SP1)、30729.4148(对应 ATL 更新),其中 WinSXS 目录下三个版本都有,而 VC9 安装目录下只有最新的 30729.4148 版本。 2. 默认情况下,VC9 编译出来的程序,内含的 manifest 文件中指定的是 21022.8 版本,这个与 VC8 的默认处理是不一样的(绑定最新版本),主要目的是防止用户只更新程序文件而不更新运行库导致程序无法运行的情况。 3. 那如果机器里只安装了最新版本的 vcredist_x86.exe 呢?没关系,安装包会生成相应的 policy 文件,尽管程序要求的是 21022.8 版本,也会重定向到最新的版本比如 30729.4148 上,嗯,灵活性不错。 4. 如果在 VC9 … 繼續閱讀
搞不懂的 Unicode
之前对 Unicode 的了解并不怎么多,前几天因为在开发上有些新想法要验证一下,就上网看了不少相关的资料,感觉上理解是增进了不少,但我的问题依旧没搞定:( 记录一下,留待以后解决吧:从 MFC 应用程序中通过 ADO 来访问 UTF8 编码的 MySQL 数据库(ODBC 的驱动),只涉及到比较平常的查询、修改等操作,编码转换本身是没啥问题(就是说没乱码啥的),但比如一个 varchar(32) 的字段(据了解这个 32 应该是字符数而不是字节数),我却只能写十来个中文字进去,多了就报错,读也只能读出来十个左右,不知道中间的转换过程哪里出了问题。。。作为对比,从 phpMyAdmin 中操作这些字段完全正常。 PS. 推荐阅读:http://blog.csdn.net/fmddlmyy/category/279030.aspx。