首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

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

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

升级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

热点排行