2012年11月

wrong logic in yajl_tree_get (returns NULL even when val exists)

用yajl不要用主页(lloyd.github.com/yajl/)的2.0.1,已经很久没有更新了,有个致命bug,如标题所说。

ISSUE:https://github.com/lloyd/yajl/issues/52

SO上的讨论:http://stackoverflow.com/questions/7309992/parsing-json-with-yajl-in-c

简而言之,第一个key存在,但是值返回NULL。

此commit已经fix 9c2948a33165c650122d131f31140c15321908f5

请用git clone git://github.com/lloyd/yajl.git 保持更新。

"_wWinMainCRTStartup" is not __stdcall with 12 bytes of arguments

vc6链接报错:

../out/WIMMgr.dll : warning LNK4086: entrypoint "_wWinMainCRTStartup" is not __stdcall with 12 bytes of arguments; image may not run

原来编译unicode版dll的时候,无需将entry point设置为_wWinMainCRTStartup。解决方法:去掉_wWinMainCRTStartup即可

installscript silent install

installshield支持静默安装的安装包类型有installscript、basic msi、installscript msi。

首先编译生成的安装包setup.exe 运行加上参数 -r  进入record mode,手动将软件安装好之后,系统会生成一个应答文件(response file)路径:C:\Windows\setup.iss。setup.iss是一个记录刚才安装用户对于每个对话框的点击和输入变量(比如一些edit box、checkbox)的文本文件。

关于setup.exe的参数解释参见http://kb.flexerasoftware.com/doc/Helpnet/installshield12helplib/IHelpSetup_EXECmdLine.htm

手动卸载软件后,将setup.iss复制到setup.exe同目录下。接下来运行setup.exe -s -f1""。f1参数指定iss绝对路径。我测试setup.exe和setup.iss在同目录的情况不加f1也可以。不过千万别用相对路径。

静默安装过程中没有界面。如果安装过程中出现错误,会在setup.exe同目录下生成setup.log:

[InstallShield Silent]
Version=v7.00
File=Log File
[ResponseResult]
ResultCode=0
[Application]
Name=xxsoftware
Version=8.00.0000
Company=xx
Lang=0009

ResultCode是返回的错误代码,0表示成功,具体参见“Checking for Errors Using the Setup.log File”。

关于静默安装方法的文档:http://kb.flexerasoftware.com/doc/Helpnet/installshield12helplib/InstallShieldSilent.htm

 

LoadImage失败 return NULL

windows api LoadImage只能加载BITMAP、ICON、CURSOR。

今天加载了一个图片,图片扩展名是bmp,但是LoadImage失败。

winhex打开文件头内容是:GIF89a,用mspaint转成bmp显示成功!