sdlyfjx 发表于 2017-3-25 14:58:15

AuMFCompiler编译报错

环境用的论坛里poker face前辈的3.3.14.2第四版

使用AFAN的MFCompiler处理,前期处理都已经结束,加入版权信息结束准备编译,然后编译器就报错了,提示Subscript used on non-accessible variable,还有一个提示是variable used without being declared关键还是Autoit3Wrapper爆出来的。

之前一直这样,但是都是通过手动编译迷惑完的XXX_MyMh.au3实现的。这次这个不仅迷惑完的不能运行,而且就算是手动编译完了还是会报错。纠结了唉~

afan 发表于 2017-3-25 18:33:29

这种问题LZ这样提问基本是无解的。
说再多也远不如一份能重现问题的代码。最好是自行精简到最简化提问代码(:不要完整的功能,能重现问题即可,哪怕只有一行代码。但要保证代码能正常执行)

zpmc123 发表于 2017-3-26 06:59:04

先来占个位,手机打字太慢,等有空给大家上个使用教程

zpmc123 发表于 2017-3-26 06:59:08

先来占个位,手机打字太慢,等有空给大家上个使用教程

sdlyfjx 发表于 2017-3-27 08:46:44

回复 4# zpmc123


    你已经占了俩位置了。。。。。

sdlyfjx 发表于 2017-3-27 08:51:42

回复 2# afan


    Afan大神,关键是我已经说明了哇。

提示Subscript used on non-accessible variable,还有一个提示是variable used without being declared关键还是Autoit3Wrapper爆出来的。

哪怕只写一个msgbox都无法直接编译成功的啊~

xzf680 发表于 2017-3-27 11:44:30

曾遇到过的问题,自己的解决方法是在备份里面找出来转一下编码保存,再编译

afan 发表于 2017-3-27 12:40:23

回复afan


    Afan大神,关键是我已经说明了哇。

提示Subscript used on non-accessible variab ...
sdlyfjx 发表于 2017-3-27 08:51 http://www.autoitx.com/images/common/back.gif


1,LZ是比较粗心的人啊,你的版本应该是 131738 前辈的,简单的复制都复制个错的……
2,如果你很确定一句正常的MsgBox(0,'','')都无法编译,你可以试试原Acc的版本。
3,编译器一般会添加预编译信息,也可以贴出来看看。
4,上传你无法编译的 精简.au3 文件

zpmc123 发表于 2017-3-27 14:40:46

仅演示AuMFCompiler工具的部份功能   精简问题!

源码就不贴了,什么也没有,只有一个MSGBOX而已!



具体的看上面附件的视频过程!

tubaba 发表于 2017-3-27 16:25:35

本帖最后由 tubaba 于 2017-3-27 16:28 编辑

回复 8# afan


    发现至少存在一处BUG,不管是MFCompiler还是AuMerger,如果脚本存在函数
Func _ArrayMaxIndex(Const ByRef $aArray, $iCompNumeric = 0, $iStart = -1, $iEnd = -1, $iSubItem = 0)
If $iCompNumeric = Default Then $iCompNumeric = 0
If $iStart = Default Then $iStart = -1
If $iEnd = Default Then $iEnd = -1
If $iSubItem = Default Then $iSubItem = 0
Local $iRet = __Array_MinMaxIndex($aArray, $iCompNumeric, $iStart, $iEnd, $iSubItem, __Array_GreaterThan)
Return SetError(@error, 0, $iRet)
EndFunc

__Array_GreaterThan这个函数被BAN掉了,目测是程序不能识别尾部不带括号组的函数调用

其实很早以前就发现某些脚本不能通过编译,但没查具体原因,今天看了此贴,又测试了一下.发现上面这个BUG

afan 发表于 2017-3-27 16:58:39

本帖最后由 afan 于 2017-3-27 17:30 编辑

回复 10# tubaba


    这种语法在较高版本中才有,AuMFC甚至早于它开发。
这种情况很好解决,加入一行即可:
#AuMFCompiler_EssFuncs=__Array_GreaterThan

#Obfuscator_Ignore_Funcs=__Array_GreaterThan

鼠标悬停“整合模式>精简未用(推荐)”可看到提示,如果用过原始的Obfuscator就应该知道用处。具体对精简有无作用还看当时发布的版本是否支持,#Obfuscator_Ignore_Funcs 肯定是支持的。

如果加后精简没问题,但迷惑有问题,那是当时的版本还不支持。那样需将精简后正常运行的脚本加工下

afan 发表于 2017-3-27 17:02:50

本帖最后由 afan 于 2017-3-27 17:07 编辑

AuMerger 精简时同样支持上述预编译,还可精简为
#AMF_EssFuncs=__Array_GreaterThan

BTW,发现问题可在原帖及时反馈,本人很乐意解决。基本上,人积极我积极,人不积极我更不会积极。

sdlyfjx 发表于 2017-3-28 09:00:19

回复 9# zpmc123


    看了冠西的视频,我觉得我还是会用的。。。只不过我用了论坛里数字前辈的AU3,所以估计编译器不一样,导致无法编译的。冠西用的是那个版本的AU3啊~

tubaba 发表于 2017-3-28 09:06:52

回复 12# afan


    恩,那可以把这个AuMerger更新下了{:face (356):}

sdlyfjx 发表于 2017-3-28 09:08:21

回复 8# afan


    哈哈哈,并不是啦~   我说的poker face前辈就是你说的数字前辈,也就是131738,因为他的头像。。。。。是一个。。。扑克脸
问题大概已经找到了,虽然我没实验,应该是编译器的问题导致的。虽然我没有换一个试试。但是跟冠希哥的视频来看,应该就是编译器不一样了。

因为上次提问的时候说过最新的版本都支持,另外我以为都用的相同版本,所以我就没多想。



另外这个就是一个msgbox都不通过的例子。
页: [1] 2 3 4 5
查看完整版本: AuMFCompiler编译报错