升级NSIS3.0a0后调用dll出错:“发生意外,尝试运行*时出错“-解决方法:修改system调用函数时的参数类型
缘起:
NSIS从2.46升级到3.0a后做的安装程序,出现题述问题
过程:
用filemonitor看了,里边有错误:name collision;
最终解决:
system:call时,用m指定buildsn的参数,原来的是:
System::Call 'eUseW::Build(t r2)'
改为:
System::Call 'eUseW::Build(m r2)'
即可
原因:
调用函数生成的字串必须是ansi的,在老版nsis中第一种调用没问题,新版就不行
文档写有:
m ANSI text, string. (FYI: 'm' for multibyte string or 'w' flipped over.)
参考:
NSIS System Plug-in http://nsis.sourceforge.net/Docs/System/System.html#faq