升级NSIS3.0a0后调用dll出错:“发生意外,尝试运行*时出错“-解决方法:修改system调用函数时的参数类型

来源:互联网 发布:linux奶瓶破解wifi 编辑:程序博客网 时间:2024/05/20 00:36

缘起:

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