易语言调用 Lua DLL
<p>在做一个易语言框架,全面支持 Lua .而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> </p><br><br>
来源:https://www.cnblogs.com/-wrc/p/19367576
頁:
[1]