131738 发表于 2014-11-17 17:55:24

小技巧 关于提示 $ghGDIPDll 未声明的解决之道

有 $ghGDIPDll 变量的旧版脚本在 3.3.12.0 及之后的新版运行时,
都会提示此变量未声明的提示,快速解决只需在头部添加:
Global $ghGDIPDll = 0 语句

一般这类脚本都会有 #Include <GDIPlus.au3>
正规做法应修改此变量为 $__g_hGDIPDll

以上为一点小经验, 留此备忘, 也供遇到此问题的参考!

zhongzijie 发表于 2014-11-17 20:52:10

先收藏了,謝謝樓主,這個蠻重要的。

weeks1 发表于 2014-11-18 07:32:41

謝謝樓主学习了。。。。。

header 发表于 2014-11-18 12:58:49

这个问题都单独立贴了

austere 发表于 2014-11-18 13:02:23

我是来顶前辈的~

bocky 发表于 2014-12-24 15:35:01

非常有用,谢谢分享

wwwangwen 发表于 2015-1-17 10:58:13

非常有用,谢谢分享

bocky 发表于 2015-5-12 10:00:16

新旧版编译器的区别吧,一台电脑能运行,另一台就不行,后来才发现这个问题

z7c9 发表于 2015-5-18 09:40:52

thanks 4 sharing!

jsgh1983 发表于 2015-7-22 19:58:50

超级有用的信息!学习了!谢谢!

wangkang_reg 发表于 2015-8-21 19:35:14

非常感谢谢谢非常感谢谢谢非常感谢谢谢

哈喽IT 发表于 2015-9-17 09:30:37

技巧最重要3Q

afan 发表于 2015-11-15 19:23:32

本帖最后由 afan 于 2015-11-15 19:29 编辑

添加 Global $ghGDIPDll = 0,虽然能够解决变量未声明的问题,但如果脚本中有使用类似 DllCalll($ghGDIPDll, .... 之类的话应该还是会有问题的。
如果将$ghGDIPDll修改替换为 $__g_hGDIPDll 当然最好,可是,如果你有用回旧版的话,就又需要修改回去了…
如果你有使用各版的需要,可以在自己的脚本上修改一下(仅修改自己的脚本,头文件 GDIPlus.au3、GDIPlusEx.au3 这些都不用管)

添加以下这个函数,并将自己的脚本中所有的 $ghGDIPDll修改替换为 __GDIPDll_Var() 即可各版通用。
如:
DllCall($ghGDIPDll, "uint", "GdipCloneImage", "hwnd", $hImage, "int*", 0)
改为:
DllCall(__GDIPDll_Var(), "uint", "GdipCloneImage", "hwnd", $hImage, "int*", 0)Func __GDIPDll_Var()        ;==== 确定 GDIPDll 使用的变量值
        If IsDeclared('__g_hGDIPDll') Then Return Eval('__g_hGDIPDll')
        Return Eval('ghGDIPDll')
EndFunc   ;==>__GDIPDll_Var

peter13447 发表于 2015-12-17 20:18:58

谢谢,楼主,刚好在查找这个问题...

zghwelcome 发表于 2016-9-21 10:33:05

谢谢,终于找到答案了
页: [1] 2
查看完整版本: 小技巧 关于提示 $ghGDIPDll 未声明的解决之道