浪子瘾 發表於 2025-12-18 16:18:00

易语言调用 Lua DLL

<p>在做一个易语言框架,全面支持 Lua&nbsp; .而Cheat Engine 支持 Lua,这样就可以将Cheat Engine 自带的库与之前积累的 易库打通。</p>
<p>踩过的坑</p>
<p>1. Lua DLL 中不同版本的函数有差异,通过Lua 手册,部分找不到。</p>
<p>2. Lua 源码使用 Visual Studio 生成 DLL 其中的自己改写的代码会被名称。具体可通过 dumpbin export 查看</p>
<p>3. Lua DLL 中宏定义和常量不能被调用,需要转成函数输出。</p>
<p>4. 易语言掉用 Lua DLL 找不到指定函数,这个时候多半是宏定义,需要找到源码写函数实现。</p>
<p>Dump of file LuaCoreDLL.dll</p>
<p>File Type: DLL</p>
<p>Section contains the following exports for LuaCoreDLL.dll</p>
<p> 00000000 characteristics<br>    FFFFFFFF time date stamp<br>      0.00 version<br>         1 ordinal base<br>         154 number of functions<br>         154 number of names</p>
<p>    ordinal hint RVA      name</p>
<p>          1    0 00001290 _Lua_Close@4 = _Lua_Close@4<br>          2    1 00001060 _Lua_DoString@16 = _Lua_DoString@16<br>          3    2 000011C0 _Lua_GetGlobalString@16 = _Lua_GetGlobalString@16<br>          4    3 00001000 _Lua_Init@0 = _Lua_Init@0<br>          5    4 00001500 _Lua_RegisterEFunc_Number@12 = _Lua_RegisterEFunc_Number@12<br>          6    5 000014C0 _Lua_RegisterEFunc_String@12 = _Lua_RegisterEFunc_String@12<br>          7    6 00001480 _Lua_RegisterEFunc_Void@12 = _Lua_RegisterEFunc_Void@12<br>          8    7 00001540 __luaL_dostring@8 = __luaL_dostring@8<br>          9    8 00005D00 luaL_addlstring = _luaL_addlstring<br>         10    9 00005D30 luaL_addstring = _luaL_addstring<br>         11    A 00005E40 luaL_addvalue = _luaL_addvalue<br>         12    B 00004EB0 luaL_argerror = _luaL_argerror<br>         13    C 00005EF0 luaL_buffinit = _luaL_buffinit<br>         14    D 00005F20 luaL_buffinitsize = _luaL_buffinitsize<br>         15    E 000065F0 luaL_callmeta = _luaL_callmeta<br>         16    F 00005650 luaL_checkany = _luaL_checkany<br>         17   10 000058A0 luaL_checkinteger = _luaL_checkinteger<br>         18   11 00005680 luaL_checklstring = _luaL_checklstring<br>         19   12 00005720 luaL_checknumber = _luaL_checknumber<br>         20   13 00005520 luaL_checkoption = _luaL_checkoption<br>         21   14 000055E0 luaL_checkstack = _luaL_checkstack<br>         22   15 00005620 luaL_checktype = _luaL_checktype<br>         23   16 000054F0 luaL_checkudata = _luaL_checkudata<br>         24   17 000070E0 luaL_checkversion_ = _luaL_checkversion_<br>         25   18 000050C0 luaL_error = _luaL_error<br>         26   19 000051D0 luaL_execresult = _luaL_execresult<br>         27   1A 00005100 luaL_fileresult = _luaL_fileresult<br>         28   1B 00006550 luaL_getmetafield = _luaL_getmetafield<br>         29   1C 00006BE0 luaL_getsubtable = _luaL_getsubtable<br>         30   1D 00006DE0 luaL_gsub = _luaL_gsub<br>         31   1E 00006660 luaL_len = _luaL_len<br>         32   1F 00006490 luaL_loadbufferx = _luaL_loadbufferx<br>         33   20 000061B0 luaL_loadfilex = _luaL_loadfilex<br>         34   21 000064F0 luaL_loadstring = _luaL_loadstring<br>         35   22 00005290 luaL_newmetatable = _luaL_newmetatable<br>         36   23 000070C0 luaL_newstate = _luaL_newstate<br>         37   24 00011140 luaL_openlibs = _luaL_openlibs<br>         38   25 00005950 luaL_optinteger = _luaL_optinteger<br>         39   26 000056B0 luaL_optlstring = _luaL_optlstring<br>         40   27 000057C0 luaL_optnumber = _luaL_optnumber<br>         41   28 00005AD0 luaL_prepbuffsize = _luaL_prepbuffsize<br>         42   29 00005D70 luaL_pushresult = _luaL_pushresult<br>         43   2A 00005E20 luaL_pushresultsize = _luaL_pushresultsize<br>         44   2B 00005F50 luaL_ref = _luaL_ref<br>         45   2C 00006CD0 luaL_requiref = _luaL_requiref<br>         46   2D 00006AF0 luaL_setfuncs = _luaL_setfuncs<br>         47   2E 000053C0 luaL_setmetatable = _luaL_setmetatable<br>         48   2F 000053F0 luaL_testudata = _luaL_testudata<br>         49   30 000066D0 luaL_tolstring = _luaL_tolstring<br>         50   31 00004A40 luaL_traceback = _luaL_traceback<br>         51   32 00006030 luaL_unref = _luaL_unref<br>         52   33 00005020 luaL_where = _luaL_where<br>         53   34 00001710 lua_absindex = _lua_absindex<br>         54   35 00001E80 lua_arith = _lua_arith<br>         55   36 000016D0 lua_atpanic = _lua_atpanic<br>         56   37 000039B0 lua_callk = _lua_callk<br>         57   38 000015D0 lua_checkstack = _lua_checkstack<br>         58   39 00020490 lua_close = _lua_close<br>         59   3A 00001EC0 lua_compare = _lua_compare<br>         60   3B 000040E0 lua_concat = _lua_concat<br>         61   3C 000018A0 lua_copy = _lua_copy<br>         62   3D 00002F20 lua_createtable = _lua_createtable<br>         63   3E 00003E00 lua_dump = _lua_dump<br>         64   3F 00004040 lua_error = _lua_error<br>         65   40 00003EC0 lua_gc = _lua_gc<br>         66   41 000041C0 lua_getallocf = _lua_getallocf<br>         67   42 00002AE0 lua_getfield = _lua_getfield<br>         68   43 000029A0 lua_getglobal = _lua_getglobal<br>         69   44 0000C6B0 lua_gethook = _lua_gethook<br>         70   45 0000C6D0 lua_gethookcount = _lua_gethookcount<br>         71   46 0000C6C0 lua_gethookmask = _lua_gethookmask<br>         72   47 00002B90 lua_geti = _lua_geti<br>         73   48 0000CE70 lua_getinfo = _lua_getinfo<br>         74   49 0000C850 lua_getlocal = _lua_getlocal<br>         75   4A 00002FC0 lua_getmetatable = _lua_getmetatable<br>         76   4B 0000C6E0 lua_getstack = _lua_getstack<br>         77   4C 00002A20 lua_gettable = _lua_gettable<br>         78   4D 00001740 lua_gettop = _lua_gettop<br>         79   4E 00004290 lua_getupvalue = _lua_getupvalue<br>         80   4F 00003070 lua_getuservalue = _lua_getuservalue<br>         81   50 00001AE0 lua_iscfunction = _lua_iscfunction<br>         82   51 00001B60 lua_isinteger = _lua_isinteger<br>         83   52 00001C00 lua_isnumber = _lua_isnumber<br>         84   53 00001C90 lua_isstring = _lua_isstring<br>         85   54 00001D10 lua_isuserdata = _lua_isuserdata<br>         86   55 0000E880 lua_isyieldable = _lua_isyieldable<br>         87   56 00004140 lua_len = _lua_len<br>         88   57 00003CF0 lua_load = _lua_load<br>         89   58 00020240 lua_newstate = _lua_newstate<br>         90   59 00020120 lua_newthread = _lua_newthread<br>         91   5A 00004200 lua_newuserdata = _lua_newuserdata<br>         92   5B 00004050 lua_next = _lua_next<br>         93   5C 00003AD0 lua_pcallk = _lua_pcallk<br>         94   5D 00002890 lua_pushboolean = _lua_pushboolean<br>         95   5E 000027F0 lua_pushcclosure = _lua_pushcclosure<br>         96   5F 000027B0 lua_pushfstring = _lua_pushfstring<br>         97   60 00002690 lua_pushinteger = _lua_pushinteger<br>         98   61 000028B0 lua_pushlightuserdata = _lua_pushlightuserdata<br>         99   62 000026C0 lua_pushlstring = _lua_pushlstring<br>      100   63 00002650 lua_pushnil = _lua_pushnil<br>      101   64 00002670 lua_pushnumber = _lua_pushnumber<br>      102   65 00002720 lua_pushstring = _lua_pushstring<br>      103   66 000028D0 lua_pushthread = _lua_pushthread<br>      104   67 000019B0 lua_pushvalue = _lua_pushvalue<br>      105   68 00002770 lua_pushvfstring = _lua_pushvfstring<br>      106   69 00001D90 lua_rawequal = _lua_rawequal<br>      107   6A 00002CD0 lua_rawget = _lua_rawget<br>      108   6B 00002D60 lua_rawgeti = _lua_rawgeti<br>      109   6C 00002E60 lua_rawgetp = _lua_rawgetp<br>      110   6D 00002320 lua_rawlen = _lua_rawlen<br>      111   6E 00003540 lua_rawset = _lua_rawset<br>      112   6F 00003620 lua_rawseti = _lua_rawseti<br>      113   70 000036E0 lua_rawsetp = _lua_rawsetp<br>      114   71 0000E660 lua_resume = _lua_resume<br>      115   72 000017B0 lua_rotate = _lua_rotate<br>      116   73 000041E0 lua_setallocf = _lua_setallocf<br>      117   74 00003320 lua_setfield = _lua_setfield<br>      118   75 000031B0 lua_setglobal = _lua_setglobal<br>      119   76 0000C670 lua_sethook = _lua_sethook<br>      120   77 000033D0 lua_seti = _lua_seti<br>      121   78 0000C940 lua_setlocal = _lua_setlocal<br>      122   79 000037E0 lua_setmetatable = _lua_setmetatable<br>      123   7A 00003230 lua_settable = _lua_settable<br>      124   7B 00001760 lua_settop = _lua_settop<br>      125   7C 00004380 lua_setupvalue = _lua_setupvalue<br>      126   7D 000038E0 lua_setuservalue = _lua_setuservalue<br>      127   7E 00003EB0 lua_status = _lua_status<br>      128   7F 00001FE0 lua_stringtonumber = _lua_stringtonumber<br>      129   80 00002160 lua_toboolean = _lua_toboolean<br>      130   81 000023F0 lua_tocfunction = _lua_tocfunction<br>      131   82 000020B0 lua_tointegerx = _lua_tointegerx<br>      132   83 000021E0 lua_tolstring = _lua_tolstring<br>      133   84 00002000 lua_tonumberx = _lua_tonumberx<br>      134   85 00002580 lua_topointer = _lua_topointer<br>      135   86 00002500 lua_tothread = _lua_tothread<br>      136   87 00002470 lua_touserdata = _lua_touserdata<br>      137   88 00001A60 lua_type = _lua_type<br>      138   89 00001AD0 lua_typename = _lua_typename<br>      139   8A 000045A0 lua_upvalueid = _lua_upvalueid<br>      140   8B 00004640 lua_upvaluejoin = _lua_upvaluejoin<br>      141   8C 000016F0 lua_version = _lua_version<br>      142   8D 00001690 lua_xmove = _lua_xmove<br>      143   8E 0000E8A0 lua_yieldk = _lua_yieldk<br>      144   8F 00008C70 luaopen_base = _luaopen_base<br>      145   90 00008D20 luaopen_bit32 = _luaopen_bit32<br>      146   91 0000AA20 luaopen_coroutine = _luaopen_coroutine<br>      147   92 0000C530 luaopen_debug = _luaopen_debug<br>      148   93 000134D0 luaopen_io = _luaopen_io<br>      149   94 00016730 luaopen_math = _luaopen_math<br>      150   95 0001A780 luaopen_os = _luaopen_os<br>      151   96 000181E0 luaopen_package = _luaopen_package<br>      152   97 00025130 luaopen_string = _luaopen_string<br>      153   98 000277E0 luaopen_table = _luaopen_table<br>      154   99 000299F0 luaopen_utf8 = _luaopen_utf8</p>
<p>Summary</p>
<p>      1000 .data<br>      5000 .rdata<br>      2000 .reloc<br>      1000 .rsrc<br>       2E000 .text</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/-wrc/p/19367576
頁: [1]
查看完整版本: 易语言调用 Lua DLL